+namespace Internal {
+
+/**
+ * SCOS date/time class
+ */
+class DateTime
+{
+public:
+
+ /**
+ * Creates an invalid date/time value
+ */
+ DateTime() {}
+
+ /**
+ * Creates a date/time value from the string.
+ * @param s Input string
+ * @param epoch Epoch
+ *
+ * The input string can be:
+ * @li Date/time in ISO format yyyy-MM-ddThh:mm[:ss[.zzz]]
+ * @li Date/time in ASD format yyyy.ddd.hh.mm[.ss[.zzz]]
+ * @li CUC hex string cccccccc[ffff]
+ *
+ * If the string is invalid, creates an invalid date/time value.
+ */
+ DateTime(String const & s, String const & epoch);
+
+ /**
+ * Returns true if the date/time value is valid.
+ */
+ bool isValid() const { return mDateTime.isValid(); }
+
+ /**
+ * Returns the date/time value a string in the ISO format yyyy-MM-ddThh:mm:ss.zzz
+ */
+ QString asIsoString() const;
+
+ /**
+ * Returns the date/time value as a string in the ASD format yyyy.ddd.hh.mm.ss.zzz
+ */
+ QString asAsdString() const;
+
+ /**
+ * Returns the date/time value as a CUC hex string in the format ccccccccffff
+ */
+ QString asCucHexString() const;
+
+
+private:
+
+ /// Date/time value
+ QDateTime mDateTime;
+
+ /// Epoch
+ QDateTime mEpoch;
+
+};
+
+} // namespace eVaf::ScosTime::Internal
+