Skip to content

Commit 7c2b39b

Browse files
authored
Merge pull request #13 from bxparks/develop
0.7 - support DST transitions at 00:01; validate against Hinnant date library; upgrade to TZ 2019b
2 parents 19fe84a + 4b60ead commit 7c2b39b

File tree

384 files changed

+7636
-6159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

384 files changed

+7636
-6159
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,29 @@
11
# Changelog
22

33
* Unreleased
4+
* 0.7
5+
* Change TimeZoneData to store mStdOffset and mDstOffset in units of
6+
one minute (instead of 15-minute increments, "code") in the off chance
7+
that the library supports timezones with one-minute shifts in the future.
8+
* Implement TimeOffset using 2 bytes (`int16_t`) instead of one byte
9+
(`int8_t`) to give it a resolution of one minute instead of 15 minutes.
10+
* Generate zoneinfo files containing AT and UNTIL timestamps with
11+
one-minute resolution (instead of 15-minute resolution). ZoneInfo files
12+
(`zonedb/` and `zonedbx/`) remain identical in size. Flash memory
13+
consumption usually increases by 130 to 500 bytes, but sometimes decreases
14+
by 50-100 bytes. Timezones whose DST transitions occur at 00:01
15+
(America/Goose_Bay, America/Moncton, America/St_Johns, Asia/Gaza,
16+
Asia/Hebron) no longer truncate to 00:00.
17+
* Rename `TimeOffset::forHour()` to `forHours()` for consistency with
18+
`forMinutes()`.
19+
* Make `ExtendedZoneProcessor` more memory efficient for 32-bit processors
20+
by packing internal fields to 4-byte boundaries.
21+
* Integrate C++11/14/17
22+
[Hinnant Date](https://github.com/HowardHinnant/date) library by
23+
creating additional `tests/validation` tests.
24+
* Upgrade `zonedb` and `zonedbx` zoneinfo files to version 2019b,
25+
after validating against the Hinnant date library.
26+
* Upgrade to `pytz` version 2019.2 to pickup TZ Database 2019b.
427
* 0.6.1
528
* Create a second Jenkins continuous build pipeline file
629
`tests/JenskinfileUnitHost` to use UnitHostDuino to run the unit tests

README.md

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ The AceTime classes are organized into roughly 4 bundles, placed in different
1515
C++ namespaces:
1616

1717
* date and time classes and types
18-
* `ace_time::DateStrings`
1918
* `ace_time::acetime_t`
19+
* `ace_time::DateStrings`
2020
* `ace_time::LocalTime`
2121
* `ace_time::LocalDate`
2222
* `ace_time::LocalDateTime`
@@ -116,16 +116,22 @@ The library provides 2 sets of zoneinfo files created from the IANA TZ Database:
116116
the TZ Database (essentially the entire database) intended to be used with
117117
the `ExtendedZoneProcessor` class.
118118

119-
These zoneinfo files (and the `ZoneProcessor` classes which calculate the UTC
120-
offsets and DST transitions) have been validated to match the UTC offsets
121-
calculated using the Python [pytz](https://pypi.org/project/pytz/) library from
122-
the year 2000 until 2037 (inclusive), and using the [Java 11
123-
Time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html)
124-
library from year 2000 to 2049 (inclusive). Custom datasets with smaller or
125-
larger range of years may be generated by developers using scripts provided in
126-
this library (although this is not documented currently). The target application
127-
may be compiled against the custom dataset instead of using `zonedb::` and
128-
`zonedbx::` zone files provided in this library.
119+
These zoneinfo files and the algorithms in this library have been validated to
120+
match the UTC offsets calculated using 3 other date/time libraries:
121+
122+
* the Python [pytz](https://pypi.org/project/pytz/) library from
123+
the year 2000 until 2037 (inclusive),
124+
* the Java JDK 11
125+
[java.time](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html)
126+
library from year 2000 to 2049 (inclusive),
127+
* the C++11/14/17 [Hinnant date](https://github.com/HowardHinnant/date) libary
128+
from year 2000 to 2049 (inclusive).
129+
130+
Custom datasets with smaller or larger range of years may be generated by
131+
developers using scripts provided in this library (although this is not
132+
documented currently). The target application may be compiled against the custom
133+
dataset instead of using `zonedb::` and `zonedbx::` zone files provided in this
134+
library.
129135

130136
It is expected that most applications using AceTime will use only a small number
131137
of timezones at the same time (1 to 3 zones have been extensively tested) and
@@ -198,9 +204,11 @@ Conversion from an epochSeconds to date-time components including timezone
198204
* 2.8 microseconds on an ESP32,
199205
* 6 microseconds on a Teensy 3.2.
200206

201-
**Version**: 0.6.1 (2019-08-07, TZ DB version 2019a, beta)
207+
**Version**: 0.7 (2019-08-13, TZ DB version 2019b, beta)
202208

203-
**Status**: Stable, no major refactoring planned. Expected to go to 1.0 soon.
209+
**Status**: Upgraded to latest TZ DB version 2019b. Validated against 3
210+
other timezone libraries (Python, Java, C++). See [CHANGELOG.md](CHANGELOG.md)
211+
for more details. API quite stable now.
204212

205213
## Examples
206214

0 commit comments

Comments
 (0)