#pragma once #include #include #include #include #if (__cpp_lib_chrono < 201907L) # include #endif namespace scwx::util::time { #if (__cpp_lib_chrono >= 201907L) typedef std::chrono::time_zone time_zone; #else typedef date::time_zone time_zone; #endif enum class ClockFormat { _12Hour, _24Hour, Unknown }; typedef scwx::util:: Iterator ClockFormatIterator; ClockFormat GetClockFormat(const std::string& name); const std::string& GetClockFormatName(ClockFormat clockFormat); template std::chrono::time_point now(); std::chrono::system_clock::time_point TimePoint(uint32_t modifiedJulianDate, uint32_t milliseconds); std::string TimeString(std::chrono::system_clock::time_point time, ClockFormat clockFormat = ClockFormat::_24Hour, const time_zone* timeZone = nullptr, bool epochValid = true); template std::optional> TryParseDateTime(const std::string& dateTimeFormat, const std::string& str); } // namespace scwx::util::time namespace scwx::util { // Add types and functions to scwx::util for compatibility using time::ClockFormat; using time::ClockFormatIterator; using time::GetClockFormat; using time::GetClockFormatName; using time::time_zone; using time::TimePoint; using time::TimeString; using time::TryParseDateTime; } // namespace scwx::util