* Added new overloads for operator+/- between year_month and duration that is convertible to years, so it is better candidate for operands that are convertible to both years and months. To preserve functionality, this operator is conditionally noexcept. * Reworked year_month_day, year_month_day_last, year_month_weekday, and year_month_weekday_last. * Added tests for this new functionality.
Date
Summary
This is actually several separate C++11/C++14/C++17 libraries:
-
"date.h"is a header-only library which builds upon<chrono>. It adds some newdurationtypes, and newtime_pointtypes. It also adds "field" types such asyear_month_daywhich is a struct{year, month, day}. And it provides convenient means to convert between the "field" types and thetime_pointtypes. -
"tz.h"/"tz.cpp"are a timezone library built on top of the"date.h"library. This timezone library is a complete parser of the IANA timezone database. It provides for an easy way to access all of the data in this database, using the types from"date.h"and<chrono>. The IANA database also includes data on leap seconds, and this library provides utilities to compute with that information as well. -
"iso_week.h"is a header-only library built on top of the"date.h"library which implements the ISO week date calendar.- Documentation: http://howardhinnant.github.io/date/iso_week.html
-
"julian.h"is a header-only library built on top of the"date.h"library which implements a proleptic Julian calendar which is fully interoperable with everything above.- Documentation: http://howardhinnant.github.io/date/julian.html
-
"islamic.h"is a header-only library built on top of the"date.h"library which implements a proleptic Islamic calendar which is fully interoperable with everything above.- Documentation: http://howardhinnant.github.io/date/islamic.html
Standardization
Slightly modified versions of "date.h" and "tz.h" were voted into the C++20 working draft at the Jacksonville FL meeting on 2018-03-17:
Build & Test
You will need CMake and a recent C++ compiler. Here follows a guide of how to build and test using the CMake Makefile generator.
mkdir build
cd build
cmake ../
cmake --build . --target testit # Consider '-- -j4' for multithreading
Projects using this library
- www.safe.com
- www.webtoolkit.eu/wt
If you would like your project (or product) on this list, just let me know.