763 Commits

Author SHA1 Message Date
Howard Hinnant
4e6872fb68 Merge branch 'gmfix2' 2015-09-27 10:48:18 -04:00
gm
635ec55065 Throw a runtime error if the install folder does not exist.
Replace my accidental use of NULL with nullptr.
Improve some comments.
2015-09-27 20:55:55 +13:00
HowardHinnant
9c04c2f182 Merge pull request #14 from gmcode/gmfix
Fix a WIN32 -> _WIN32 typo and try to make some comments more readable.
2015-09-23 19:54:08 -07:00
gm
0791828329 Fix a WIN32 -> _WIN32 typo and try to make some comments more readable. 2015-09-24 14:46:20 +12:00
Howard Hinnant
c8ee261043 Added a few convenience field getters:
* year_month_weekday::weekday()
* year_month_weekday::index()
* year_month_weekday_last::weekday()
2015-09-19 13:46:09 -04:00
Howard Hinnant
6af1976e36 Move all literals into namespace date_literals
This includes both the literal operators, and the constexpr literals such as sun and jan.
2015-09-06 17:58:29 -04:00
Howard Hinnant
68f7d11c45 Add sizeof test 2015-09-06 16:58:22 -04:00
Howard Hinnant
a0d2343eab Try disabling construction of weekday from int.
Also fix bug in round for negatives.
2015-09-02 20:48:44 -04:00
Howard Hinnant
479cd16986 Add validate test for timezones 2015-08-15 16:00:42 -04:00
Howard Hinnant
9b79ad2ce2 Add tests for time_of_day and make_time 2015-08-15 14:21:43 -04:00
Howard Hinnant
2841bc69a7 Exhaustive survey test for op div 2015-08-15 12:33:10 -04:00
Howard Hinnant
12e6d38bba Add tests for operator/() 2015-08-14 19:17:12 -04:00
Howard Hinnant
27ebc9dc44 Add tests for year_month_weekday_last 2015-08-14 16:55:06 -04:00
Howard Hinnant
6e347c11e9 Add tests for year_month_weekday 2015-08-14 16:47:11 -04:00
Howard Hinnant
5f182bc410 Add tests for year_month_day_last 2015-08-14 16:26:42 -04:00
Howard Hinnant
cb3ffd10e0 Add tests for year 2015-08-14 13:57:45 -04:00
Howard Hinnant
751f6aa279 Extra sanity checks for year_month_day 2015-08-10 23:09:56 -04:00
Howard Hinnant
a2ac8a8003 Tweak testit to better handle OPTIONS 2015-08-10 20:59:29 -04:00
HowardHinnant
5c7692be4f Merge pull request #12 from villevoutilainen/patch-2
Comment typos
2015-08-10 20:32:18 -04:00
Ville Voutilainen
eb32682e99 Comment typos 2015-08-10 23:14:15 +03:00
HowardHinnant
6a5c88b92d Merge pull request #11 from villevoutilainen/patch-1
Add myself to tz.cpp copyright
2015-08-10 10:10:31 -04:00
Ville Voutilainen
13de3eb7f2 Add myself to tz.cpp copyright 2015-08-10 09:59:01 +03:00
Howard Hinnant
e95858bb7d Add tests for year_month_day 2015-08-09 22:18:31 -04:00
Howard Hinnant
4b8ca1c24d Change year_month_day_last to store a {year, month_day_last}
* 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.
2015-08-09 18:37:46 -04:00
Howard Hinnant
7796894a1c Add tests for year_month 2015-08-09 17:37:33 -04:00
Howard Hinnant
c8f5ec5b4d Add tests for month_weekday_last 2015-08-09 16:31:12 -04:00
Howard Hinnant
e701a42ced Change month_weekday_last to store a {month, weekday_last}
* 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.
2015-08-09 16:30:42 -04:00
Howard Hinnant
71d54735b5 Add tests for month_weekday 2015-08-09 15:55:48 -04:00
Howard Hinnant
6ef4eac56e Add test for month_day_last 2015-08-09 15:41:55 -04:00
Howard Hinnant
6e0ce6aafe Add test for month_day 2015-08-09 15:34:50 -04:00
Howard Hinnant
8c3023fb52 Add test for weekday_last 2015-08-09 15:11:55 -04:00
Howard Hinnant
1534d75014 Add test for weekday_indexed 2015-08-09 15:07:08 -04:00
Howard Hinnant
55d2098c6f Add weekday tests 2015-08-09 14:48:11 -04:00
Howard Hinnant
57c7d88eda Eliminate redundant tests:
* The unit tests should reflect basic definitions.
* Derivative relationships do not need to be tested.
* Derivative tests needlessly increase test times and noise.
2015-08-09 13:27:39 -04:00
Howard Hinnant
28eadffa06 Implement '%z' 2015-08-08 18:11:35 -04:00
Howard Hinnant
999dfc4b37 Change to MIT copyright
* Added unicode copyright to CLDR-derived mapping.
2015-08-08 17:03:43 -04:00
Howard Hinnant
2d115a8022 Add to_duration() to time_of_day:
* This is a synonym for static_cast<precision>(*this).
* This variation can be easier to spell when the precision
  is not conveniently available.
2015-08-08 13:38:12 -04:00
Howard Hinnant
33f923b508 Rename seconds_point to second_point for consistency with day_point. 2015-08-08 13:20:12 -04:00
Howard Hinnant
0d0841f5b8 Rename current_timezone() to current_zone():
* Better symmetry with locate_zone(name).
2015-08-08 13:06:04 -04:00
Howard Hinnant
0fe43bab32 Merge branch 'test'.
The unit tests are still very much a work in progress.
But the work now lives on the master branch.
2015-08-08 12:52:45 -04:00
Howard Hinnant
5104a4afcb Revert: Make months and years not convertible to seconds:
* 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.
2015-08-08 12:45:55 -04:00
gm
c21e392c81 Initial Win32 support.
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.
2015-08-06 23:16:03 -04:00
HowardHinnant
225a2b6c65 Update README.md 2015-08-05 21:31:12 -04:00
HowardHinnant
328d2a0fd0 Update README.md 2015-08-05 21:27:20 -04:00
Howard Hinnant
fd485c5383 [X] Make months and years not convertible to seconds:
* 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.
2015-08-05 21:11:50 -04:00
Howard Hinnant
16775dccb9 Remove streaming for time_points with resolution greater...
than a day.

* cout << floor<years>(system_clock::now()) is very confusing.
* The aforementioned streaming operation is now a compile time error.
2015-08-03 22:13:20 -04:00
Howard Hinnant
756460892c Initial unit test submission. 2015-08-02 15:56:48 -04:00
Howard Hinnant
94237ceaa7 Take into account that year::ok() may now return false. 2015-08-02 12:30:49 -04:00
Howard Hinnant
c99a40b846 Add year_month += and -= operators. 2015-08-01 19:16:33 -04:00
Howard Hinnant
2e715844bb Restrict the range of year:
to within the range of chrono::minutes.
* This prevents overflow when adding minutes to day_point
  when minutes is stored in 32 bits.
* Also added static checks on the range of hours and seconds.
  If these static checks fire, the range of year should be
  further reduced.
* This does not impact gcc at all.  It impacts clang only
  when targeting 32 bit architectures.  And it fixes
  overflow on Visual Studio.
* Thanks much to https://github.com/gmcode for the herculean
  effort in tracking this down.
2015-08-01 16:49:51 -04:00