Commit Graph
87 Commits
Author SHA1 Message Date
Howard Hinnant 5c09ae73f2 Work around {} bug for older compilers 2017-02-08 11:32:33 -05:00
Howard Hinnant 800ae143aa Correct the return type on two format overloads 2017-02-06 10:18:08 -05:00
Howard Hinnant 3a9880999d Add format and parse overloads for durations 2017-01-28 16:21:21 -05:00
Howard Hinnant 2b8e6562ae Work around VS-2015 bug 2017-01-24 15:35:28 -05:00
James Beach 186dbb2891 Enable CONSTCD14 for VS2017 2017-01-19 12:46:11 -05:00
Howard Hinnant 49a59e5665 Add support for unsigned-based durations in time_of_day 2017-01-14 12:54:03 -05:00
Alexandre Dupas 41093d05d8 Use CONSTDATA in function parse making compiler without constexpr support happy 2017-01-07 13:19:02 -05:00
Howard Hinnant 4a1c49152f Enable previous fix for C++11 as well. 2017-01-01 14:51:10 -05:00
gm 07d9e8a0fe Enable the c++14 CONSTDATA code path for VS2017 and fix const const warning. 2017-01-01 18:01:20 +13:00
Howard Hinnant 6889dc69fb Add missing #include 2016-12-26 18:34:40 -05:00
Howard Hinnant 628404b87c Re-implement parse.
* Work with const CharT* format at the lowest level.
* Avoid dependence on std::lib except for locale-sensitive parsing.
* Add tests for parse.
2016-12-26 16:27:56 -05:00
Howard Hinnant 2216bfbe44 Work around VS-2015 bug 2016-12-07 10:47:50 -05:00
Howard Hinnant 8a3aeb566b Fix and test format %y 2016-11-27 15:30:01 -05:00
Howard Hinnant a5450e9d02 Fix and test format %C 2016-11-27 13:41:24 -05:00
Howard Hinnant 6b3ea4516a Fix bugs with formatting fractional seconds 2016-11-26 13:37:38 -05:00
Howard Hinnant 298e9aff2d Add to_stream which avoids temporary streams and strings.
*  This is a low-level formatting facility which other functions
   such as format call into.
2016-11-25 20:37:51 -05:00
Howard Hinnant 0cfa783b14 Unify and simplify fractional decimal seconds formatting
* Many of the ideas and some of the code herein is credited to
  Adrian Colomitchi

* Decouple fractional decimal seconds formatting from time_of_day
  formatting so that it can be more easily used elsewhere in the
  future.

* Include super-second durations such as nanocenturies and
  microfortnights in the class of durations that will get formatted
  with fractional decimal seconds.

* If a duration is exactly representable with fractional decimal
  seconds not exceeding 18 decimal fractional digits, format it
  exactly.  Otherwise format it to 6 fractional decimal digits
  (microseconds precision).  The number 18 is chosen as this is the
  limit of std::ratio using 64 bits (i.e. atto).

* The above bullet implies that durations with ratio<1, 4> will now
  be formatted with 2 fractional decimal digits instead of 1.
  ratio<1, 8> will be formatted with 3, and ratio<1, 3> with 6.

* Unify the implementation into one C++11 implementation that works
  equally well with C++14.

* Drive-by fix a couple formatting bugs dealing with negative
  durations.

* Deprecate the make_time functions taking unsigned md by removing
  their documentation.  Also deprecate the corresponding time_of_day
  constructors taking unsigned md.

* This change paves the way for future formatting improvements.
2016-11-24 19:53:39 -05:00
Howard Hinnant 44e0480087 Fix formatting bug with %Ez 2016-11-12 18:21:21 -08:00
Howard Hinnant 33f7cc6de4 Fix overflow bug in parse 2016-11-08 12:59:00 -08:00
Howard Hinnant 9f7a438f7d Add unary operators + and - to year 2016-10-19 12:01:26 -04:00
Howard Hinnant 9e25c2d74f Supply missing imbues in format 2016-10-18 11:52:07 -04:00
Howard Hinnant 806c29fddc Lots of minor changes motivated by reviews of the draft proposal 2016-10-15 17:31:08 -04:00
Howard Hinnant cfa55850c7 Fix dangling reference bug in parse 2016-10-11 10:34:59 -04:00
Howard Hinnant 381cbf9a7b Fix type-o in parse 2016-10-08 15:04:27 -04:00
Sascha Zelzer 553affefa4 Work around a compiler bug in VS2013 with explicit conversion constructors. 2016-09-15 20:10:04 -04:00
Howard Hinnant 765d0e8f7a Add parse manipulators 2016-09-15 20:10:04 -04:00
Howard Hinnant 86446a9fac format passes time_point by const& 2016-09-13 20:28:00 -04:00
Howard Hinnant b2df8cade5 Add trivial default constructors to most calendar types 2016-09-13 20:14:43 -04:00
Howard Hinnant 845ce25bb7 Refine decision to use the std::chrono rounding modes 2016-09-10 11:57:52 -04:00
Howard Hinnant 59d9cfa96d Update the availability of floor, ceil, round 2016-09-09 21:21:22 -04:00
Howard Hinnant a7b6adae62 Add %F to parse 2016-09-09 21:01:21 -04:00
acolomitchi 3b3a27efe1 Fix for issue #79.
parse was not checking failbit aggressively enough.
2016-09-09 21:00:11 -04:00
Howard Hinnant 32ca148d5c Work around uniform initialization bug for clang-3.6 2016-08-29 12:24:07 -04:00
Howard Hinnant 17ba481e71 Work around [Bug c++/67631] New: brace initialization bug
https://gcc.gnu.org/ml/gcc-bugs/2015-09/msg01520.html
2016-08-28 18:30:12 -04:00
Howard Hinnant 8e2de8587e Eliminate dependence on OS's gmtime_s / gmtime_r
When compiled with -arch i386, Apple's gmtime_s has a 32 bit bug meaning
it can't format dates earlier than 1901-12-13 20:45:52.
2016-08-28 14:52:41 -04:00
Howard Hinnant 7816c3b48f Eliminate dependence on OS's timegm / _mkgmtime
Apple's OS timegm has a 32 bit bug meaning it can't parse dates earlier
than 1901-12-13 20:45:52.
2016-08-28 14:26:22 -04:00
Howard Hinnant 3e25bd45f7 Clean up includes
Alphabetize and survey for missing and unneeded includes.
2016-08-27 14:18:46 -04:00
Howard Hinnant fcdca67c5b Switch to floor in format
Need to round towards negative infinity for dates prior to the epoch,
else the wrong answer gets formatted.
2016-08-27 13:22:27 -04:00
Matthias Gabriel 2fae542f6a Fix formating of time_points with a resolution finer than system_clock::duration 2016-08-26 10:55:05 +02:00
Matthias Gabriel ef57f27b38 Added #include <cctype> for windows std::isdigit 2016-08-25 15:41:49 +02:00
Matthias Gabriel ef8bba9818 Fix missing standard locale 2016-08-25 08:23:19 +02:00
Matthias Gabriel e8f8a1ffac Added missing sstream include 2016-08-25 08:20:14 +02:00
Howard Hinnant ebc20c139b Move formatting and parsing
Moved formatting and parsing of sys_time and local_time from tz.h to
date.h in order to make this functionality available to a wider
audience.  Existing code does not need to change.  But future code
can #include "date.h" instead of "tz.h" and need not compile tz.cpp nor
link to curl.

Formatting zoned_time remains in tz.h.
2016-08-24 20:54:24 -04:00
Pavel 52e2a0b2cf Prevent warnings when using -Wundef flag 2016-07-04 11:14:59 -04:00
Howard Hinnant 7d1befb1db Introduce julian.h 2016-06-26 18:49:13 -04:00
gm 55087c6cbd HAS_REMOTE_API support for Windows. Adds support for MingW too.
* HAS_REMOTE_API still defaults to 0
* When HAS_REMOTE_API=0 only libraries advapi32.lib, ole32.lib and shell32.lib are required.
* Setting HAS_REMOTE_API=1 requires curl: https://curl.haxx.se/libcurl/
*- Also need to manually install 7-Zip (http://www.7-zip.org).
*- Will automatically install Tinyxml2 (http://www.grinninglizard.com/tinyxml2/).
*- Will automatically install http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml
2016-06-16 22:03:12 -04:00
Howard Hinnant 33ddd7e51d Back off the constexpr on time_of_day_storage for C++11. 2016-06-09 21:23:45 -04:00
Howard Hinnant f44e692540 Add streaming inserter for utc_time.
* Fix bug in utc_to_sys.
2016-06-06 21:05:43 -04:00
Howard Hinnant a89aab05cf Protect from overflow when minutes is 32 bits 2016-05-31 11:12:20 -04:00
Howard Hinnant ea2d0d3357 constexpr more stuff and clean up whitespace 2016-05-30 22:09:21 -04:00