Date and time classes for Arduino supporting the IANA TZ Database time zones to convert epoch seconds to date and time components in different time zones.
MIT License
Published by bxparks about 5 years ago
Fri<=1
correctly in various python scripts. (#17)deltaCode
offsetCode
field to give it thePublished by bxparks about 5 years ago
--granularity
into --until_at_granularity
andoffset_granularity
. Current zonedb files use values of 60 and 900Published by bxparks about 5 years ago
TimeZone::printAbbrevTo()
with moreTimeZone::getAbbrev()
.Published by bxparks about 5 years ago
int16_t
) instead of one byteint8_t
) to give it a resolution of one minute instead of 15 minutes.zonedb/
and zonedbx/
) remain identical in size. Flash memoryTimeOffset::forHour()
to forHours()
for consistency withforMinutes()
.ExtendedZoneProcessor
more memory efficient for 32-bit processorstests/validation
tests.zonedb
and zonedbx
zoneinfo files to version 2019b,pytz
version 2019.2 to pickup TZ Database 2019b.Published by bxparks about 5 years ago
tests/JenskinfileUnitHost
to use UnitHostDuino to run the unit testsPublished by bxparks about 5 years ago
UnixHostDuino
.CommandLineClock
. Make it workzonedb/zone_infos.cpp
andzonedbx/zone_infos.cpp
.ace_time::common::DateStrings
to just ace_time::DateStrings
common::
namespace soace_time::clock
classes. Merged TimeKeeper
and TimeProvider
into aClock
class hierarcy. Merged SystemClockSyncLoop
(separateSystemClockLoop
(subclass of SystemClock
) andSystemClockSyncCoroutine
(separate class) into SystemClockCoroutine
SystemClock
with mixin of ace_routine::Coroutine
). MergedkeepAlive()
into ::loop()
and ::runCoroutine()
methods, so we don'tSystemClockLoop
use theClock
, making it as responsive asSystemClockCoroutine
.UnixClock.h
which provides access to the internal Unix clockPublished by bxparks about 5 years ago
HelloZoneManager
and add it to the README.md
.basic::ZoneInfo
, extended:ZoneInfo
and related structs tighter onbasic::Transition
and extended::Transition
tighter on 32-bitBasicZoneProcessor
andExtendedZoneProcessor
.Serial
with SERIAL_PORT_MONITOR
for compatibilitySerialUSB
as the serialPublished by bxparks over 5 years ago
USER_GUIDE.md
.DateStrings
string pointers into PROGMEM, saving 42 bytes of RAM.SERIAL_PORT_MONITOR
instead of Serial
everywhere for portabilityPublished by bxparks over 5 years ago
SystemClockHeartbeatLoop
andSystemClockHeartbeatLoop
and replace with just a call toSystemClock::keepAlive()
.ManualZoneProcessor
and merge most of itsTimeZone
using kTypeManual
. We loseManualZoneProcessor
but theTimeZone
object without an extra objectzoneId
to ZoneInfo
that identifies a zone. It isname
. Thetzcompiler.py
generator script will detect hash collisions and create anZoneManager
as the ZoneRegistrar
, andZoneManager
as the TimeZone
factory, which keeps an internalZoneProcessor
. TimeZone
objects can be dynamically bound toZoneProcessor
objects using createForZoneInfo()
,createForZoneName()
, `createForZoneId().TimeZoneData
data struct to allow serialization of a TimeZone objectZoneManger::createForTimeZoneData()
.ZoneSpecifier
to ZoneProcessor
to describe its functionalityZoneInfo
is now passed directly into the TimeZone object usingTimeZone::forZoneInfo()
factory method, with the ZoneProcessor
Published by bxparks over 5 years ago
{dayOfWeek}<={dayOfMonth}
Rule Zion, 2005 to 20012, IN Apr, ON Fri<=1
.ACE_TIME_USE_BASIC_PROGMEM
andACE_TIME_USE_EXTENDED_PROGMEM
) to place zoneinfoPublished by bxparks over 5 years ago
README.md
and USER_GUIDE.md
.Published by bxparks over 5 years ago
Link
entries from TZ Database files as C++ references toZone
entries.backward
and etctera
files from TZ Database to the tzcompiler.pyExtendedZoneSpecifier
now supports every Zone and Linkbackzone
and systemv
).+
into _PLUS_
,_
.tests/validation
directory.validation_data.*
files dynamically at compilePublished by bxparks over 5 years ago
USER_GUIDE.md
from README.md
.ace_time::provider
to ace_time::clock
and renameSystemTimeProvider
to SystemClock
.HelloSystemClock
example code.isValidYear()
into various forComponents()
methods to checkDateStrings::weekDay*()
methods to dayOfWeek*()
forZonedDateTime::printTo()
format to match Java Time format.friend
declarations not related to unit tests.kInvalidEpochSeconds
, standardize onLocalDate::kInvalidEpochSeconds
.timeOffset
a required parameter for constructors and factoryOffsetDateTime
instead of defaulting to TimeOffset()
.timeZone
a required parameter in constructors and factory methodsZonedDateTime
.BasicZoneSpecifier::getOffsetDateTime()
to handle gaps and overlapsPublished by bxparks over 5 years ago