12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #ifndef DATETIME_H
- #define DATETIME_H
- #include "src/opl.h"
- namespace OPL {
- class DateTime {
- public:
- const inline static QString ISO_FORMAT_STRING = QStringLiteral("yyyy-MM-dd");
- const inline static QString DE_FORMAT_STRING = QStringLiteral("dd.MM.yyyy");
- const inline static QString EN_FORMAT_STRING = QStringLiteral("MM/dd/yyyy");
- const static inline QMap<OPL::DateFormat, QString> DATEFORMATSMAP = {
- {OPL::DateFormat::ISODate, ISO_FORMAT_STRING},
- {OPL::DateFormat::DE, DE_FORMAT_STRING },
- {OPL::DateFormat::EN, EN_FORMAT_STRING },
- };
- const static inline QStringList DISPLAY_NAMES = {
- QStringLiteral("ISO 8601: yyyy-MM-dd"),
- QStringLiteral("DE: dd.MM.yyyy"),
- QStringLiteral("EN: MM/dd/yyyy")
- };
- /*!
- * \brief Reimplements QDate::toString to accept OPL::Date::DateFormat enums
- */
- inline static QString dateToString(const QDate &date, OPL::DateFormat format = OPL::DateFormat::ISODate)
- {
- return date.toString(DATEFORMATSMAP.value(format));
- };
- /*!
- * \brief takes a user-provided input and tries to convert it to a (valid) QDate.
- * \return QDate (invalid if input not recognized)
- */
- static QDate parseInput(QString &user_input, OPL::DateFormat format);
- static void tryToFix(QString &user_input, OPL::DateFormat format);
- /*!
- * \brief padCentury adds the century to a date where it was omitted
- */
- static void padCentury(QString &io_user_input, OPL::DateFormat format);
- /*!
- * \brief pads a user-provided date string with 0s to facilitate conversion to QDate
- */
- static void padZeroes(QString &io_user_input);
- static void addSeperators(QString &io_user_input, const OPL::DateFormat &format);
- static bool containsSeperator(const QString &user_input);
- static const QStringList& getDisplayNames();
- static const QString getFormatString(OPL::DateFormat format);
- /*!
- * \brief today Returns a string containing the current date in ISO format
- * \return
- */
- static const QString currentDate();
- /*!
- * \brief dateTimeToString formats a QDateTime object into a string in a uniform way.
- * \return
- */
- static inline const QString dateTimeToString (const QDateTime& date_time, OPL::DateTimeFormat_deprecated format) {
- switch (format) {
- case OPL::DateTimeFormat_deprecated::Default:
- return date_time.toString(Qt::ISODate);
- case OPL::DateTimeFormat_deprecated::Backup:
- return date_time.toString(QStringLiteral("yyyy_MM_dd_T_hh_mm"));
- default:
- return QString();
- }
- }
- static inline QDateTime fromString(const QString& date_time_string)
- {
- auto date_time = QDateTime::fromString(date_time_string, QStringLiteral("yyyy-MM-ddhh:mm"));
- date_time.setTimeZone(QTimeZone::utc());
- return date_time;
- }
- };
- } // namespace OPL
- #endif // DATETIME_H
|