Date Versions Save

A date and time library based on the C++11/14/17 header

v3.0.1

2 years ago

Scoop up miscellaneous bug fixes over the past year.

v3.0.0

3 years ago

This will likely be the final release of this library. From here you should migrate to C++20 as vendors begin to ship this library under namespace std::chrono.

The master branch will continue to be bug fixed as bugs arise. However a subsequent release may or may not happen.

The CMake support of this library is chaotic (to be kind). Personally I don't use it and instead follow the installation instructions found here: https://howardhinnant.github.io/date/tz.html#Installation (needed only for tz.h).

v2.4.1

6 years ago
  • Improved CMake support.
  • New names for months: January
  • New names for weekdays: Sunday
  • Parsing with %Ez now supports optional minutes field.
  • Miscellaneous bug fixes.

v2.4

6 years ago
  • Introduce CMake support.
  • Introduce clock_cast for converting between time_points of different clocks.
  • Allow conversion between zoned_time<Duration1, TimeZonePtr1> and zoned_time<Duration2, TimeZonePtr2>.
  • Miscellaneous porting and warning fixes.
  • Update to latest IANA website changes.

2.3

6 years ago
  • Change directory structure to have include/ and src/.
  • Rename TZ_DB to tzdb (there's a backwards compatible typedef that may disappear in the future).
  • Specify constructors for nonexistent_local_time and ambiguous_local_time. This enables custom time zones to easily use them if needed.
  • Support multiple versions of the IANA database. The singleton is now a lock-free thread safe singly-linked list. The existing API implicitly references the front of this list.
  • Support custom time zones in zoned_time. See the Examples section in the tz documentation.
  • Add C++17 deduction guide support.
  • Give zoned_time a default constructor.
  • Give weekday_indexed a default constructor.
  • Add is_clock trait.
  • Add ONLY_C_LOCALE. Helps with systems with missing time_get/time_put facets.
  • Improve sub-picosecond support.
  • Minor bug and compatibility fixes.

v2.2

6 years ago
  • Rewrite of format and parse:
    • Many more types can be formatted and parsed with format and parse now.
      • durations, calendar types, tai_time, gps_time, ...
    • parse supports width parameter on many format flags.
    • to_stream and from_stream now return a reference to their streams.
    • Parsing whitespace very customizable with use of %n, %t and whitespace.
  • Using the OS-supplied timezone database now an option on Linux and macOS.
  • The downloaded timezone database install location can now be set at run time.
  • Improved support for basic_string with custom allocator.
  • duration I/O is merged into date.h.
  • Make zoned_time and time_of_day "deduction guide ready" for C++17.
    • This eliminates the need for make_zoned and make_time in C++17.
  • Many miscellaneous bug fixes.

2.1.0

7 years ago
  • Set USE_SHELL_API to default to 1. This better supports different flavors of linux.
  • INSTALL can now be configured on the command line.
  • Parsing and formatting fractional seconds can now handle super-second durations such as microfortnights.
  • Formatting and parsing rewritten, moved into date.h.
  • iOS support added.
  • Added trivial default constructors for most calendar types.
  • Add unary operators + and - to year.
  • Add to_stream.
  • Miscellaneous bug fixes.

v2.0.0

7 years ago

This is an API-breaking release relative to v1.0.0. The biggest difference is that day_point has been renamed to sys_days. This change was not done lightly, but I feel it was necessary to evolve the time zone library in the best direction. Indeed, the creation of the time zone library was itself a real-world test of the date library, and this change is a result of that test.

The time zone library has seen significant changes with the introduction of local_time, local_days, and zoned_time. zoned_time, created with the helper functions make_zoned is now the most convenient high-level API to access time zone computations.

Formatting and parsing utilities have been added to the time zone library. And "leap-second aware" clocks have also been added: utc_clock, tai_clock and gps_clock. This clocks have time_points that when subtracted across leap second insertions take those inserted leap seconds into account.

Also new with this version of the time zone library is the ability to have the IANA time zone database automatically updated to the latest version on the first use by your application. This is the default setting for linux and macOS, and requires just a little extra installation effort on Windows.

The header chrono_io.h provides streaming for the chrono::duration types. This gets rid of the need to use .count() and specify units manually when streaming durations.

New calendars introduced:

  • Julian
  • Islamic

Bug fixes include:

  • Much faster database initialization, even when compiled without optimizations on.
  • Port to RedHat
  • Support for wide streams
  • Fix overflow when minutes is 32 bits.

v1.0.0

8 years ago