diff --git a/inc/Helpers/TimeHelper.hpp b/inc/Helpers/TimeHelper.hpp
index 5131d4e94f63fc4959c44c0b73efade52a5607a7..3fe1576281cbb281f8ccd1905ba328a1bfee7336 100644
--- a/inc/Helpers/TimeHelper.hpp
+++ b/inc/Helpers/TimeHelper.hpp
@@ -13,15 +13,22 @@
  * This class formats the spacecraft time and cooperates closely with the ST[09] time management.
  *
  * The ECSS standard supports two time formats: the CUC and CSD that are described in CCSDS
- * 301.0-B-4 standard. The chosen time format is CDS and it is UTC-based (UTC: Coordinated
- * Universal Time). It consists of two main fields: the time code preamble field (P-field) and
- * the time specification field (T-field). The P-Field is the metadata for the T-Field. The
- * T-Field is consisted of two segments: 1) the `DAY` and the 2) `ms of day` segments.
- * The P-field won't be included in the code, because as the ECSS standards claims, it can be
- * just implicitly declared.
+ * 301.0-B-4 standard.
  *
- * @note
- * Since this code is UTC-based, the leap second correction must be made. The leap seconds that
+ * The CDS is UTC-based (UTC: Coordinated Universal Time). It consists of two main fields: the
+ * time code preamble field (P-field) and the time specification field (T-field). The P-Field is the metadata for the
+ * T-Field. The T-Field is consisted of two segments: 1) the `DAY` and the 2) `ms of day` segments. The P-field won't
+ * be included in the code, because as the ECSS standards claims, it can be just implicitly declared.
+ *
+ * The CUC time format consists of two main fields: the time code preamble field (P-field) and the time specification
+ * field(T-field). The T-Field contains the value of the time unit and the designer decides what the time unit will
+ * be, so this is a subject for discussion. The recommended time unit from the standard is the second and it is
+ * probably the best solution for accuracy.
+ *
+ * @notes
+ * The defined epoch for both time formats is 1 January 1958 00:00:00
+ *
+ * Since CDS format is UTC-based, the leap second correction must be made. The leap seconds that
  * have been occurred between timestamps should be considered if a critical time-difference is
  * needed
  *
@@ -89,6 +96,33 @@ public:
 	 * @return the UTC date
 	 */
 	static TimeAndDate parseCDStimeFormat(const uint8_t* data);
+
+	/**
+	 * Generate the CUC time format (3.3 in CCSDS 301.0-B-4 standard).
+	 *
+	 * Converts a UTC date to CUC time format.
+	 *
+	 * @note
+	 * The T-field is specified for the seconds passed from the defined epoch 1 January 1958. We use 4 octets(32
+	 * bits) for the time unit(seconds) because 32 bits for the seconds are enough to count 136 years! But if we use 24
+	 * bits for the seconds then it will count 0,5 years and this isn't enough. Remember we can use only integers
+	 * numbers of octets for the time unit(second)
+	 *
+	 * @param TimeInfo is the data provided from RTC (UTC)
+	 * @return TimeFormat the CUC time format. More specific, 32 bits are used for the T-field (seconds since 1/1/1958)
+	 * @todo time security for critical time operations
+	 * @todo declare the implicit P-field
+	 */
+	static uint32_t generateCUCtimeFormat(struct TimeAndDate& TimeInfo);
+
+	/**
+	 * Parse the CUC time format (3.3 in CCSDS 301.0-B-4 standard)
+	 *
+	 * @param data time information provided from the ground segment. The length of the data is a
+	 * fixed size of 32 bits
+	 * @return the UTC date
+	 */
+	static TimeAndDate parseCUCtimeFormat(const uint8_t* data);
 };
 
 #endif // ECSS_SERVICES_TIMEHELPER_HPP
diff --git a/src/Helpers/TimeHelper.cpp b/src/Helpers/TimeHelper.cpp
index a42349001cf6cd005bc79f5769b9c539cc98f2f3..85248bedb9d866c0a3fea93613bb50223706a5d3 100644
--- a/src/Helpers/TimeHelper.cpp
+++ b/src/Helpers/TimeHelper.cpp
@@ -125,3 +125,14 @@ TimeAndDate TimeHelper::parseCDStimeFormat(const uint8_t* data) {
 
 	return secondsToUTC(seconds);
 }
+
+uint32_t TimeHelper::generateCUCtimeFormat(struct TimeAndDate& TimeInfo) {
+	return utcToSeconds(TimeInfo);
+}
+
+TimeAndDate TimeHelper::parseCUCtimeFormat(const uint8_t* data) {
+	uint32_t seconds = ((static_cast<uint32_t>(data[0])) << 24) | ((static_cast<uint32_t>(data[1]))) << 16 |
+	                   ((static_cast<uint32_t>(data[2]))) << 8 | (static_cast<uint32_t>(data[3]));
+
+	return secondsToUTC(seconds);
+}