171 Commits

Author SHA1 Message Date
Nicolas
b0adc54677
static_cast to silent warning implict conversion (#693)
That happen because `sizeof(long long unsigned int) == sizeof(long double)` in 32-bit architectures.
2021-08-17 11:35:13 -04:00
Howard Hinnant
d57d764707 Round when parsing seconds instead of duration_cast. 2021-07-25 23:08:53 -04:00
Howard Hinnant
383214dea6 Remove string_view overloads of parse
* They were rejected by the LWG
2021-07-25 23:01:30 -04:00
Howard Hinnant
fb2554a7e0 Give gcc 4.8 a hand in constructing fields
Fixes #678
2021-06-02 18:23:54 -04:00
JulZimmermann
8c126525cc
call from_stream explicitly from date namespace (#677)
Co-authored-by: Julian Zimmermann <Julian.Zimmermann@gti.de>
2021-05-31 12:54:11 -04:00
Howard Hinnant
8f95c598c9 [Pedantic] Use named constants in place of literals 2021-05-27 21:20:36 -04:00
Aaron Franke
417402ad35
Remove trailing whitespace and add gitattributes (#672) 2021-05-24 08:22:43 -04:00
Howard Hinnant
38267fa1ef Template basic_string_view on Traits in parse overloads 2021-05-20 08:46:42 -04:00
Howard Hinnant
2f4411312b Add extra parse_manip constructor to avoid ambiguity 2021-05-19 14:36:09 -04:00
Howard Hinnant
e23c15bb36 Add string_view overloads to parse functions 2021-05-19 14:13:33 -04:00
Howard Hinnant
2ef74cb41a If %I is used without %p, mark the ambiguity with failbit 2021-04-16 15:15:45 -04:00
Howard Hinnant
ac6ca2a095 Add is_clock_v 2021-04-15 11:41:20 -04:00
Howard Hinnant
ae017078c9 Fix Posix::time_zone for southern hemisphere
* The get_info functions were not prepared for the case where the start
  and end times of a rule are chronologically reversed for a year.  I.e.
  the daylight saving start comes later in the year than the daylight
  saving end.  When save is positive, this happens in the southern
  hemisphere (e.g. "Australia/Sydney" -> "AEST-10AEDT,M10.1.0,M4.1.0/3").
  It also happens in the nothern hemisphere when the save is negative
  (e.g. "Europe/Dublin" -> "IST-1GMT0,M10.5.0,M3.5.0/1").

* Added tests for Posix::time_zone.
2021-04-09 11:08:12 -04:00
Howard Hinnant
156e0a786e Fix up namespace error in Posix::time_zone::to_sys 2021-04-07 20:33:01 -04:00
Howard Hinnant
9a9a42db74 Enable streaming output operator for floating-point-based time_points 2021-04-06 17:22:22 -04:00
Howard Hinnant
b5b765f928 Clean up calendrical streaming operators for invalid values 2021-03-31 16:15:53 -04:00
Howard Hinnant
654b97091f Change default on C++17 to uncaught_exceptions
* By popular demand.
* If you need to undo this change, compile with
  -DHAS_UNCAUGHT_EXCEPTIONS=0.
2021-03-21 22:41:22 -04:00
Howard Hinnant
0e08b942c8 Correct the streaming output of year_month_day
* Invalid dates were printing out "invalid"
  too many times.
2021-03-11 19:50:14 -05:00
Davis Vaughan
1c285d6545
Cast to unsigned char before calling toupper() (#648) 2021-02-24 12:49:46 -05:00
Howard Hinnant
26fc2bd372 Fix read_long_double with respect to decimal_point:
*  Respect locale settings when ONLY_C_LOCALE=0
*  Do not respect locale settings when ONLY_C_LOCALE=1
Fixes #637
2021-01-05 21:14:41 -05:00
Howard Hinnant
97246a638a Silence lossy conversion warning
Fixes #620
2020-11-10 08:41:30 -05:00
Howard Hinnant
215cacff56 Change all uses of round to detail::round_i
Fixes #613

detail::round_i is the same as round when the To::rep
is integral, and is just an implicit conversion when
To::rep is floating point.
2020-10-25 20:16:07 -04:00
Howard Hinnant
7848566815 Fix a parse error for Visual Studio 2020-10-02 12:53:16 -04:00
Howard Hinnant
ba99134b8a For USE_OS_TZDB, look for leap seconds in the files
leapseconds and leap-seconds.list
2020-09-11 15:53:07 -04:00
Howard Hinnant
5e18488899 Fix subtle bug in fractional_width 2020-09-05 16:34:04 -04:00
Andre Nguyen
057b441ceb Use LLONG_MAX instead of std::numeric_limits<long long>::max() when constexpr is absent 2020-08-21 17:09:51 -04:00
Andre Nguyen
d7a0bf1fa7 replace noexcept with NOEXCEPT macro 2020-08-21 17:09:51 -04:00
Andre Nguyen
8140d979cd fix brace value initialization for msvc 18 2020-08-21 17:09:51 -04:00
Andre Nguyen
7990eae740 fix user defined literals for compatibility with msvc 18 2020-08-21 17:09:47 -04:00
Howard Hinnant
569b2d6785 Improve error message while parsing posix timezone string 2020-08-02 10:56:37 -04:00
Howard Hinnant
6952fb50a6 Correct the value for not_a_year 2020-07-08 14:20:31 -04:00
Howard Hinnant
fe2f9c7eac Change constexpr to CONSTDATA 2020-07-07 15:01:45 -04:00
Howard Hinnant
d544e5af25 Throw exception if zoned_time is constructed with nullptr 2020-06-14 19:30:23 -04:00
Howard Hinnant
cac99da8dc For traits in constexpr context use ::value
* Fixes #542
2020-06-02 21:08:57 -04:00
Howard Hinnant
9343e31599 Give Posix::time_zone equality comparison 2020-05-24 21:31:18 -04:00
Howard Hinnant
f43c39fcf1 Add member function name() const to Posix::time_zone
* Returns the minimal string that uniquely identifies this
  time_zone.  That is, it takes advantage of all defaults.
2020-05-06 22:12:15 -04:00
Howard Hinnant
e12095f26f Revert change for floating point reps in decimal_format_seconds 2020-04-18 09:24:53 -04:00
Howard Hinnant
7d811743e0 Fix parse of second offset in posix time zone 2020-04-18 09:24:22 -04:00
Howard Hinnant
a2fdba1adc __GNUC_MINOR -> __GNUC_MINOR__
* Fixes #560
2020-03-30 12:50:37 -04:00
Howard Hinnant
4c1968b8f0 Fix constexpr overflow problems on gcc-7-9 2020-03-08 21:58:56 -04:00
Asad. Gharighi
9cc3a7bca1 Adding Persian/Jalali/Solar-Hijri calendar 2020-03-08 20:18:45 -04:00
Nexus Web Development
9502bc27a3 Update Date.h (#529)
* Remove arithmetic overflow: 

Using operator '-' on a 4 byte value and then casting the result to a 8 byte value. Casting the value to the wider type before calling operator '-' to avoid overflow.
2020-01-11 15:24:10 -05:00
nanoric
66a5aa482e Add constexpr for clock_cast. 2020-01-11 14:44:06 -05:00
Howard Hinnant
a184309786 Fix unwanted localization of integral grouping
* Fixes #525
2020-01-01 11:12:14 -05:00
johnmph
48433b9892 Update date.h (#518)
using decltype in day constructor to be consistent with month and year
2019-12-05 14:00:16 -05:00
Nehal J Wani
4c95165298 Constrain make_zoned for icc16
Build fails with Intel Compiler v16:

<source>(1698): error: expression must have a constant value
  std::is_class<typename std::decay<decltype(*std::declval<TimeZonePtr&>())>::type>{}
                                                                                    ^
2019-11-29 19:45:59 -05:00
Ten10
940f4a5ceb Support Curl Error Buffer
Allow user to get error message when download fails
2019-11-29 19:38:40 -05:00
Lakshay Garg
018a50bcd0 Work around for a NVCC compiler bug
The NVCC compiler fails to compile the date library due
to a compiler bug which causes it to emit an error when
directly using std::ratio_{multiply,divide} in the template
instantiations for std::duration. This PR works around the
issue by introducing custom ratio_{multiply,divide} which
delegate to the standard library templates
2019-11-29 19:27:36 -05:00
Howard Hinnant
3e376be2e9 Rename link to time_zone_link
* At the request of LEWG
2019-11-08 19:36:09 +00:00
Howard Hinnant
224c71a899 Rename leap to leap_second and leaps to leap_seconds
* At the request of LEWG
2019-11-08 19:24:03 +00:00
jgzhuang
67e272a54e change the order in hh_mm_ss::to_duration() to have correct result on Windows for cases when h is 2147483647 hours and m and s are all 0 (#501) 2019-10-24 09:57:36 -04:00
Howard Hinnant
d399e10cba Bump zoned_time fixes for MSVC from 1900 to 1916 2019-10-22 13:28:48 -04:00
Howard Hinnant
96ffe23f72 Replace INTMAX_MAX with numeric_limits 2019-10-21 22:22:50 -04:00
Howard Hinnant
a5c4b4ebf8 Protect is_am and make12 from ADL 2019-09-17 15:48:15 -04:00
Alexej Harm
44344000f0 Fix MSVC C++ version detection 2019-09-12 19:58:05 -04:00
KerryJ
d21333f636 Fixes #484 2019-09-03 23:17:43 -04:00
maximilianriemensberger
cb4bf26fc7 Fix compilation error with GCC 5
GCC 5 complains that `operator-=` and `operator+=` are not constexpr.  The `-` and `+` operator appear seem to be fine.
2019-09-03 22:59:04 -04:00
Tomasz Kamiński
5a0057587d Correct behavior for classes for which only lvalue is convertible to string_view.
Added OnlyLValueString test case that shows the problem with
current impl. Implemented the change, that accept TimeZonePtrOrName
by forwarding reference (to preserve value category), and
merged time_zone selection into one trait.
2019-09-01 14:43:50 -04:00
Tomasz Kamiński
7c020642fb Fixed deduction guides for GCC 8.
The GCC 8 was correctly preffering the deduction guide
syntezied from the std::string_view constructor which is more
specialized than deduction guide. Changed the constructor
so the Duration cannot be deduced from it.
2019-09-01 14:43:50 -04:00
Howard Hinnant
141ba85614 Fix space-matches 0 spaces at end of format string 2019-08-23 15:51:18 -04:00
Robert Campion
dca8ddc659 Replace computed value with standard macro 2019-07-21 23:43:29 -04:00
James Beach
1f5c192f4a Resolve GCC 9.1.0 noexcept warning 2019-07-21 23:31:29 -04:00
Si Wei How
c0e7b4e2f7 Make date.h compatible with g++-4.7 2019-07-21 21:48:51 -04:00
AdrienBellanger
09d90a8b5e Fix operator<< for years with non C locale
Fix the issue https://github.com/HowardHinnant/date/issues/392
2019-07-21 21:20:49 -04:00
tomaszkam
27d1e1e54e Removed undefined behavioir from year_mont_day_last::day (#456)
This is done to make the result of calling day() on
year_month_day_last object that is !ok() unspecified.
Checked only months, are there are needed to avoid UB.
2019-05-28 09:01:14 -04:00
Jonathan Chapple
7817ebf45a Update date.h (#451)
endf -> endif
2019-05-20 09:44:20 -04:00
Howard Hinnant
a029f1105d Conditionally set _SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING 2019-05-19 22:46:35 -04:00
Howard Hinnant
44215f6781 Eschew using directives in headers, even at function scope.
* There is still an impact on user code, though I'm not sure
  if by specification or compiler bug.
* Prefer using declarations instead.
2019-05-19 21:53:29 -04:00
Howard Hinnant
081e9af55b Migrate ptz.h from jan to January 2019-04-05 22:36:21 -04:00
Howard Hinnant
8a563041fa Adjust HAS_STRING_VIEW for VS
Fixes #330
2019-04-05 09:19:54 -04:00
Howard Hinnant
9dc96fd9b5 Silence warning
Fixes #337
2019-03-26 18:13:39 -04:00
Howard Hinnant
8b69087d35 Fix up constexpr of changed weekday_from_days 2019-03-21 12:23:38 -04:00
Howard Hinnant
d5e96f0991 Suppress VS-15 warning about concerning conditional expression is constant
Thanks to https://github.com/ujos for the report.
2019-03-20 21:24:01 -04:00
Evgen Bodunov
5ba1c1ad85 HAS_UNCAUGHT_EXCEPTIONS definition.
Added some flexibility for usage of std::uncaught_exceptions().
Xcode 10 uses clang and perfectly compiles C++17, but
std::uncaught_exceptions() is available only on iOS 10+ devices. When
application supports iOS 9 devices and uses C++17 there is no way to
build it, except drop iOS 9 support or remove C++17 code. Using this
define we could configure should date.h use std::uncaught_exceptions()
or not.
2019-03-20 20:43:43 -04:00
Howard Hinnant
cb7ca96f68 Protect weekday_from_days from signed overflow
Found by static analyzer.
This change makes weekday_from_days slightly more efficient.
2019-03-19 19:51:32 -04:00
Howard Hinnant
b5d025ea2f Align time_of_day with hh_mm_ss
Per committee review
2019-03-19 19:50:30 -04:00
Howard Hinnant
f782ae98f0 Fix type-o again 2019-02-20 15:27:44 -10:00
Howard Hinnant
d6c5d02068 Fix type-o in get_leap_second_info_t 2019-02-20 15:25:50 -10:00
Howard Hinnant
16077472af Rename is_leap_second to get_leap_second_info 2019-02-20 15:19:54 -10:00
Howard Hinnant
5a62c405e0 Remove unneeded make_precision 2019-02-03 23:21:36 -05:00
Howard Hinnant
09a19a09f4 Further consolidate time_of_day logic
Adjust how it works for floating point durations.
2019-02-03 16:14:56 -05:00
Howard Hinnant
9cb0013aef Update time_of_day to be more consistent ...
the needs of formatting.
2019-02-02 14:06:12 -05:00
NeroBurner
4e7e76b981 add c_encoding and iso_encoding weekday functions (#380)
- c_encoding satisfies ctime wday encoding: days since Sunday, range
  [0,6]
- iso_encoding satisfies ISO 8601 weekday:
  a digit d from 1 through 7, beginning with Monday and ending with Sunday
2019-01-19 14:46:21 -05:00
Howard Hinnant
90d0440884 Introduce %q and %Q to_stream formatting flags
* These flags format a duration.
* %Q specifies the duration's numeric value.
* %q specifies the duration's SI abbreviation.
* Example: format("%Q %q", 45ms) == "45 ms"
2019-01-19 14:30:19 -05:00
Daniela Engert
7231a182a4 Revert 5f34c40 and 23b1f00 in preparation of a better solution.
Signed-off-by: Daniela Engert <dani@ngrt.de>
2018-12-16 15:29:17 -05:00
Howard Hinnant
5f34c40523 More patches for VS-2017 compatiblity 2018-11-25 17:04:27 -05:00
Howard Hinnant
23b1f007fe Patch for VS-2017 compatiblity 2018-11-25 14:38:54 -05:00
Howard Hinnant
a22125ca40 Remove constexpr from islamic::year::isleap for C++11 2018-11-20 09:00:12 -05:00
Howard Hinnant
8f91ef27ed Revert "Model the TAI-UTC difference between 1961 and 1972"
This reverts commit 1eed461d06b02854d9310d5ab0198eccd2be1d1d.
2018-11-08 13:56:23 -08:00
Howard Hinnant
1eed461d06 Model the TAI-UTC difference between 1961 and 1972 2018-10-03 17:51:55 -04:00
Howard Hinnant
591f572b67 Allow %j to parse and format durations 2018-09-26 14:35:03 -07:00
F
69e9cd612f Prefer using std::string that using namespace std and unqualified string (#386)
'using namespace std;' in header files can conflict with custom
namespace names. For example 'string' is used without 'std::'
qualification. If tz.h is included in a file where string is a
namespace, it cannot be compiled anymore. The same happens with date.h
if ONLY_C_LOCALE=1.
2018-09-26 17:31:56 -04:00
Howard Hinnant
6a4d93a0bd Silence more shadow warnings 2018-07-01 23:00:33 -04:00
Howard Hinnant
39d6730665 Silence shadow warnings 2018-07-01 22:37:25 -04:00
Howard Hinnant
de6a03d337 Set _SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING for VS 2018-06-27 09:21:19 -04:00
Jaka Bac
1b32e316db Workaround MSVC 19.14.26431 parsing bug (#355) 2018-06-21 10:08:59 -04:00
tomaszkam
f46885e632 Suffix d for days duration (#354) 2018-06-20 11:39:48 -04:00
Tomasz Kamiński
2d282e35fa Use string_literal for C++11 when possible 2018-06-19 19:37:02 -04:00
Howard Hinnant
d50970b32a Some backwards compatibility fixes for VS-2013 2018-06-12 18:13:24 -04:00
Christopher Blaesius
07876e4433 Character classification functions (isspace, isalnum) are undefined for signed chars
Convert them to int using char_traits or static_cast to unsigned char
2018-06-11 17:00:45 -04:00