local timezone optional

This commit is contained in:
2021-11-21 03:52:06 +01:00
parent 4d2e9305dc
commit 1955671291
3 changed files with 24 additions and 3 deletions

7
Kconfig.projbuild Normal file
View File

@ -0,0 +1,7 @@
menu "espchrono Configuration"
config ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE
bool "Support default timezone"
default "y"
endmenu

View File

@ -71,10 +71,12 @@ bool daylightSavingTime(local_clock::time_point _timeStamp)
} }
} // namespace } // namespace
#if !defined(ESP32) || defined(CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE)
auto local_clock::now() noexcept -> time_point auto local_clock::now() noexcept -> time_point
{ {
return utcToLocal(utc_clock::now()); return utcToLocal(utc_clock::now());
} }
#endif
local_clock::time_point utcToLocal(utc_clock::time_point utc, time_zone timezone) local_clock::time_point utcToLocal(utc_clock::time_point utc, time_zone timezone)
{ {
@ -105,10 +107,12 @@ utc_clock::time_point localToUtc(local_clock::time_point local)
return utc; return utc;
} }
#if !defined(ESP32) || defined(CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE)
local_clock::time_point utcToLocal(utc_clock::time_point ts) local_clock::time_point utcToLocal(utc_clock::time_point ts)
{ {
return utcToLocal(ts, local_clock::timezone()); return utcToLocal(ts, get_default_timezone());
} }
#endif
namespace { namespace {
DateTime toDateTime(std::chrono::milliseconds ts) DateTime toDateTime(std::chrono::milliseconds ts)

View File

@ -1,5 +1,9 @@
#pragma once #pragma once
#ifdef ESP32
#include "sdkconfig.h"
#endif
// system includes // system includes
#include <chrono> #include <chrono>
#include <cstdint> #include <cstdint>
@ -61,6 +65,10 @@ struct time_zone
} }
}; };
#if !defined(ESP32) || defined(CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE)
extern time_zone get_default_timezone() noexcept;
#endif
template<typename _Clock, typename _Dur> template<typename _Clock, typename _Dur>
struct local_time_point : std::chrono::time_point<_Clock, _Dur> struct local_time_point : std::chrono::time_point<_Clock, _Dur>
{ {
@ -110,9 +118,9 @@ struct local_clock
static constexpr bool is_steady = false; static constexpr bool is_steady = false;
#if !defined(ESP32) || defined(CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE)
static time_point now() noexcept; static time_point now() noexcept;
#endif
static time_zone timezone() noexcept;
}; };
struct millis_clock struct millis_clock
@ -166,7 +174,9 @@ struct LocalDateTime : public DateTime
local_clock::time_point utcToLocal(utc_clock::time_point timeStamp, time_zone timezone); local_clock::time_point utcToLocal(utc_clock::time_point timeStamp, time_zone timezone);
utc_clock::time_point localToUtc(local_clock::time_point local); utc_clock::time_point localToUtc(local_clock::time_point local);
#if !defined(ESP32) || defined(CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE)
local_clock::time_point utcToLocal(utc_clock::time_point ts); local_clock::time_point utcToLocal(utc_clock::time_point ts);
#endif
DateTime toDateTime(utc_clock::time_point ts); DateTime toDateTime(utc_clock::time_point ts);
LocalDateTime toDateTime(local_clock::time_point ts); LocalDateTime toDateTime(local_clock::time_point ts);