Commit Graph

48 Commits

Author SHA1 Message Date
Martchus 7bed9cd38c Remove TODOs about parsing/printing custom formats
It makes likely more sense to implement that entirely in user code. The
parsing/printing functions for common formats have also been improved so
this is likely not very relevant anymore anyways.
2023-11-23 20:24:44 +01:00
Martchus 5acf422f71 Add useful operators to `DateTimeExpression`
* Add serialization back to string, useful for implementing
  `TagValue::toString()`
* Add equality comparition
2022-08-13 14:10:40 +02:00
Martchus 3a06641bb9 Improve docs for `DateTimeExpression` 2022-08-13 14:07:57 +02:00
Martchus f20d596785 Add `DateTimeExpression` to keep track of parsed timestamp parts
The existing timestamp parsers already internally keep track what parts
have been parsed via an index variable. This change exposes this
information as it can sometimes be useful to know what parts were actually
present in the timestamp.
2022-08-12 20:45:06 +02:00
Martchus 77c353fb6c Add `TickType` and integer overloads to chrono utilities 2022-02-15 23:01:25 +01:00
Martchus 6c7e8ae735 Avoid warning about out of bounds array access 2021-12-11 23:58:51 +01:00
Martchus b3ebe5ce38 Fix typos found via `codespell --skip .git -w` 2021-07-03 19:07:49 +02:00
Martchus e6e7a63d6a Make DateTime::fromString() cope with 'T' separator 2021-05-24 21:27:47 +02:00
Martchus a116c9e790 Avoid possibility of overflow in DateTime parsing functions
* This is strictly undefined behavior so let's avoid it
* As a side-effect it is now possible to omit the separators in
  DateTime::fromIsoString()
2021-05-24 21:27:18 +02:00
Martchus 546b1fecb7 Fix parsing ISO timestamp with negative timezone offset and no seconds fraction
See https://github.com/Martchus/syncthingtray/issues/93
2021-05-21 19:40:37 +02:00
Martchus 8c033ca243 Fix warnings 2021-03-20 21:56:45 +01:00
Martchus 32780ed6a6 Support formatting ISO timestamps via DateTime::toString() with option to omit defaults
Omitting components are also allowed when parsing ISO timestamps so it makes sense to
have something similar in the other direction as well.

Note that the idea comes from ID3v2.4.0 which stores timestamps in a subset of ISO 8601
similarily to what this library supports and it allows to omit default components as
well.
2020-04-26 21:38:02 +02:00
Martchus c834f8923d Allow omitting month and day when parsing ISO date
This leaves only the year as mandatory component (other components
can already be omitted).
2020-04-24 22:15:49 +02:00
Martchus 34170b83f1 Apply clang-format 2020-04-13 01:10:33 +02:00
Martchus 4b67736adf Add DateTime::toIsoStringWithCustomDelimiters() 2020-04-11 21:51:52 +02:00
Martchus 085ec2feca Improve DateTime
* Improve documentation about time zone handling
* Add DateTime::toTimeStamp()
* Add experimental DateTime::fromChronoTimePoint()
  and DateTime::fromChronoTimePointGmt()
2019-11-17 22:30:51 +01:00
Martchus 0feb7d667e Add inline/constexpr to more functions in chrono lib 2019-08-19 19:09:19 +02:00
Martchus b48b2f5c06 Have everything in one top-level namespace 2019-06-10 21:56:46 +02:00
Martchus 9a50d2b8df Remove types 2019-04-13 20:33:39 +02:00
Martchus 8b919250e3 chrono utils: Make public constants signed 2019-04-13 20:33:39 +02:00
Martchus 98edb5a67c Allow omitting second fraction in DateTime::fromIsoString 2018-11-01 20:20:32 +01:00
Martchus 2862c81a23 Fix ISO date string parsing/formatting 2018-01-29 16:24:39 +01:00
Martchus 400e73005a Fix use of std::time 2018-01-28 18:03:58 +01:00
Martchus a89f6f9ce4 Improve documentation of chrono library 2017-12-03 01:45:11 +01:00
Martchus d7185fc1bc Improve documentation 2017-11-29 19:11:01 +01:00
Martchus 1ab9349eaa Improve const correctness 2017-11-29 19:08:22 +01:00
Martchus 49d626702c Fix implicit sign conversion 2017-09-22 00:23:02 +02:00
Martchus 357ede4ee7 chrono utils: Improve handling micro- and nanoseconds
DateTime and TimeSpan have an accuracy of 100 nanoseconds.

This commit ensures this is also handled in toString() and
fromString() methods and adds relevant convenience methods.
2017-08-31 02:17:05 +02:00
Martchus b69d4a8b65 Disable DateTime::exactGmtNow() under MacOS
`clock_gettime(CLOCK_REALTIME, &t);` does not seem to
be available under MacOS
2017-07-29 00:32:19 +02:00
Martchus 3bc9a7b07a Fix handling negative time spans 2017-06-25 16:00:11 +02:00
Martchus 59e20b1043 Apply clang-format 2017-05-01 03:13:11 +02:00
Martchus 5679460302 Simplify DateTime::fromTimeStampGmt() 2017-04-19 21:50:21 +02:00
Martchus 452954dc1f Add DateTime::exactGmtNow()
* Provides more precise wall-clock time
* Only available under UNIX so far
2017-04-19 21:48:23 +02:00
Martchus c4d73b0d7d Use C++14 string literal 2017-02-06 18:32:27 +01:00
Martchus 33d368397f Make use of newly introduced string builder 2017-01-27 18:51:54 +01:00
Martchus 31be0c24ea Add DateTime::fromIsoString{Gmt,Local} 2016-09-01 15:42:25 +02:00
Martchus 12588c6928 Improve chrono utils
- Support parsing/generating ISO time stamp with
  time zone delta
- Fix minor bugs
- Improve tests
2016-08-30 19:59:04 +02:00
Martchus 76e422a7ce Make DateTime::now() and DateTime::gmtNow() inline 2016-05-23 00:04:06 +02:00
Martchus 2e6a8dc6a8 added DateTime::gmtNow() 2016-02-15 20:29:52 +01:00
Martchus df9c0573bf preserve ABI 2016-01-29 01:13:11 +01:00
Martchus 3c9f95059e added DateTime::fromTimeStampGmt() 2016-01-27 00:14:20 +01:00
Martchus a8f7644350 minor adjustments 2016-01-18 23:41:30 +01:00
Martchus 9f4d1daacf fixed DateTime::now() 2015-09-22 22:52:43 +02:00
Martchus 4d6bf67188 fixed includes 2015-09-06 20:19:09 +02:00
Martchus 603dbf823a fixed includes 2015-09-06 15:30:16 +02:00
Martchus 8c09772802 added new method to construct DateTime instance from timestamp 2015-06-21 21:41:56 +02:00
Martchus 6cd3315910 small adjustments 2015-05-17 17:18:07 +02:00
Martchus 24ba96a17f First commit 2015-04-22 18:36:40 +02:00