* from storing a {year, month}.
* Change constructor from {year, month} to {year, month_day_last}.
* Add getter from year_month_day_last().
* Fix up operator/() as required.
* This is an API change, but not a functionality change.
* Rationale: consistency.
* from storing a {month, weekday}.
* Change constructor from {month, weekday} to {month, week_last}.
* Change getter from weekday() to weekday_last().
* Fix up operator/() as required.
* This is an API change, but not a functionality change.
* Rationale: consistency.
* The unit tests should reflect basic definitions.
* Derivative relationships do not need to be tested.
* Derivative tests needlessly increase test times and noise.
* After much consideration I consider this not a good change.
* It introduced a completely arbitrary mathematical relationship
among the units.
* This commit restores a precise relationship among the units which
is based on the Gregorian calendar.
* However this experiment has been preserved in the git history.
This library now compiles on Windows but requires VS2015 for Windows.
VS2013 may work but this has not been tested yet.
Requires NOMINMAX to be defined to avoid clashes with the Windows.h
headers and the C++ stl and this libraries Date max functions.
Also known to work equivalently with recent g++ and mingw combinations
but -std=C++14 flag should be set.
C++14 restrictions may be relaxed later. Patches welcome!
g++ 5.1 was tested. It may work with other version but that hasn't been tried.
Mac OS and Linux systems are known to compile with -std=c++11
current_timezone and locate_zone will return iana names not windows
time zone names. This is expected and as designed.
* The Gregorian average of months and years is an
integral number of seconds.
* This patch slightly tweaks the average to make it
not an integral number of seconds, and thus these
units no longer implicitly convert to seconds.
* This will flag naive mixing of years, months and seconds
as a compile time error.