From eff94f175ce9c88c0053bb6fd4eeb605975a80e0 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Fri, 31 Mar 2023 13:22:53 +0200 Subject: [PATCH] Add fromDateTime() --- src/espchrono.cpp | 15 +++++++++++++-- src/espchrono.h | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/espchrono.cpp b/src/espchrono.cpp index 4adf047..6d25e28 100644 --- a/src/espchrono.cpp +++ b/src/espchrono.cpp @@ -133,7 +133,6 @@ local_clock::time_point utcToLocal(utc_clock::time_point ts) } #endif -namespace { DateTime toDateTime(std::chrono::microseconds ts) { auto _time = ts.count(); @@ -189,7 +188,6 @@ DateTime toDateTime(std::chrono::microseconds ts) dateTime.dayOfWeek = dayOfWeek; return dateTime; } -} DateTime toDateTime(utc_clock::time_point ts) { @@ -204,6 +202,19 @@ LocalDateTime toDateTime(local_clock::time_point ts) return dateTime; } +utc_clock::time_point fromDateTime(DateTime ts) +{ + const sys_days date = ts.date; + return utc_clock::time_point { + date.time_since_epoch() + + std::chrono::hours{ts.hour} + + std::chrono::minutes{ts.minute} + + std::chrono::seconds{ts.second} + + std::chrono::milliseconds{ts.millisecond} + + std::chrono::microseconds{ts.microsecond} + }; +} + std::expected parseDateTime(std::string_view str) { // both valid: diff --git a/src/espchrono.h b/src/espchrono.h index 89bf019..eaaa780 100644 --- a/src/espchrono.h +++ b/src/espchrono.h @@ -191,8 +191,10 @@ utc_clock::time_point localToUtc(local_clock::time_point local); local_clock::time_point utcToLocal(utc_clock::time_point ts); #endif +DateTime toDateTime(std::chrono::microseconds ts); DateTime toDateTime(utc_clock::time_point ts); LocalDateTime toDateTime(local_clock::time_point ts); +utc_clock::time_point fromDateTime(DateTime ts); std::expected parseDateTime(std::string_view str);