mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-21 10:29:02 +00:00
When parsing a timestamp-string into epoch seconds, first we use strptime to get a `struct tm` of year, month, day, etc, but strptime is timezone-naive and doesn't set tm_isdst meaningfully (glibc apparently doesn't set it at all). Then we ask mktime() to convert a `struct tm` to epoch seconds, and we can ask it to lookup DST status for the current timezone by giving it a `struct tm` with tm_isdst set to a negative value. See the mktime(3) manpage. With this change, strptime_local and localtime2sec agree with how GNU `date` parses timestamp-strings, with the exception that `date` refuses to parse ambiguous timestamp-strings that fall within the "fold" intervals of DST transitions, saying they're invalid. Since `date` uses additional libraries to give good timezone support it's capable of detecting these ambiguous timestamp-strings, but for a tool like miller it's reasonable to rely directly on libc and have it choose an epoch-seconds-timestamp that correspond to either the first or second time-of-day that the timestamp-string represents. Remove a duplicate test from c/reg_test/run. Fix #170 |
||
|---|---|---|
| .. | ||
| Makefile.am | ||
| Makefile.in | ||
| out | ||
| out-dev | ||