Commit Graph

60 Commits

Author SHA1 Message Date
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 e6f4bf3561 Apply clang-format 2020-10-31 20:31:04 +01:00
Martchus 1f4fabcd9f Add operators '*' and '/' to TimeSpan 2020-10-24 22:10:25 +02: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 73470d0b65 Fix DateTime::fromDateAndTime() for the day 0001-01-01 2020-04-24 21:55:45 +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 0f56d25251 Use consistent order for visibility attribute 2020-01-29 18:30:02 +01: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 5c098df8d7 Fill last gaps in class list documentation 2019-09-04 18:54:48 +02: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 e79563569a Improve Period class 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 7b01938ece Add {TimeSpan,DateTime}::ticks() for easier read/write 2018-06-23 14:32:46 +02: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 db006408b7 Export DateTime operator+(DateTime begin, Period period) 2017-12-03 14:56:34 +01:00
Martchus 46e9d4b1e4 Add formatting for Period class 2017-12-03 14:55:49 +01:00
Martchus 26cd303422 Improve period compution 2017-12-03 01:45:54 +01:00
Martchus a89f6f9ce4 Improve documentation of chrono library 2017-12-03 01:45:11 +01:00
Martchus 85f29adb8a Use full precision for total seconds in TimeSpan::toString 2017-11-29 23:11:26 +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 3051675bbe Allow conversion of TimeSpan to string with total seconds 2017-11-27 10:25:41 +01:00
Martchus 49d626702c Fix implicit sign conversion 2017-09-22 00:23:02 +02:00
Martchus e52fd5a4af Apply tidy after updating to clang-format 5.0.0
The behavior of clang-format slightly changed in Clang 5.0.0:
http://releases.llvm.org/5.0.0/tools/clang/docs/ReleaseNotes.html#clang-format
2017-09-17 21:45:23 +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 be4901ce2c Add missing #include <function>
This fixes compilation using libc++ instead
of libstdc++
2017-05-31 00:35:39 +02:00
Martchus 59e20b1043 Apply clang-format 2017-05-01 03:13:11 +02:00
Martchus c728f0ffe0 Add hash functions for chrono objects 2017-05-01 02:54:06 +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 d6b08b8ed9 Fix decoration for static builds
- Also add improvemnts a few other things in the build system
2016-08-29 15:35:48 +02:00
Martchus db7b02b1db Make header guards more unique and consistent 2016-06-11 19:09:14 +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