Commit Graph
111 Commits
Author SHA1 Message Date
Howard Hinnant 9c9ddeba37 Work around EDG 4.11 front end bug. 2017-05-21 13:41:31 -04:00
Howard Hinnant 0fb3921e5b Fail if you need a valid year and don't parse one. 2017-05-20 23:04:49 -04:00
Tullio Menga 83c8b4d522 changes for compatibility with Clang with Microsoft CodeGen (v140_clang_c2):
- added date:: namespace to flloor() and abs() calls
- added IUnknown forward declaration before including Windows headers to prevent issue with objbase.h
- minor changes
2017-05-08 10:04:20 -04:00
Howard Hinnant f493bd67f2 Tweak white space parsing rules (again):
* White space matches zero or more white space characters.

  * %n matches one white space character.

  * %t matches zero or one white space characters.
2017-05-07 15:25:07 -04:00
Howard Hinnant cf0481b9af Reset command, width and modified for %n and %t in from_stream. 2017-05-04 21:03:48 -04:00
Howard Hinnant f57432d7b4 Don't skip white space by default in from_stream.
* Put a space at the beginning of your
  format string to recover this behavior.
2017-05-04 14:47:28 -04:00
Howard Hinnant e8f0dca452 Fix type-o in to_stream duration overload. 2017-05-04 10:04:17 -04:00
Howard Hinnant 2f8997d3ed Make parse fail if fmt string is not completely consumed. 2017-04-18 12:02:21 -04:00
Howard Hinnant d15491103b Move chrono_io.h functionality into date.h. 2017-04-13 21:01:47 -04:00
Howard Hinnant 2c094f5559 Restrict parse of %Z to valid timezone names and abbrev. 2017-04-13 14:09:14 -04:00
Howard Hinnant 096bad2622 Parse should fail if fmt string is not consumed. 2017-04-13 12:45:28 -04:00
Howard Hinnant 4f27361378 Add range checking for the time-of-day fields during parse.
*  Also refactor the leap-second logic used in utc_time.
2017-04-07 18:52:09 -04:00
Howard Hinnant 3daf8c1ffe Minor tweaks. 2017-04-01 21:53:29 -04:00
Florian Dang c4c2550b29 Ignore GCC warnings.
* 4.9 missing initializer warnings
* pedantic for __int128 case
* Wrap diagnostic push and pop in tz.cpp and date.h.
2017-04-01 12:36:54 -04:00
Howard Hinnant d29cd4e343 Fix formatting bug for utc_time. 2017-03-30 14:44:42 -04:00
Howard Hinnant 3495c513a1 Enable parse and format for more types:
* year
    * month
    * day
    * weekday
    * year_month
    * month_day
2017-03-25 17:46:17 -04:00
Howard Hinnant dbee0e7da4 Allow parsing %Ez to parse only 1 hour digit. 2017-03-17 20:18:06 -04:00
Howard Hinnant 9e1120c676 Make time_of_day default constructor non-explicit.
Add zoned_time const char* overloaded constructor.
2017-03-12 15:18:53 -04:00
gaspardpetit f4292e6aca Added Alloc argument to template parameters to support custom allocators in from_stream 2017-03-11 20:13:06 -05:00
Gaspard Petit a811a20748 Fixes minor typos in comments - no actual change to code 2017-03-08 11:28:35 -05:00
Howard Hinnant 3df43424ac Add from_stream 2017-03-02 13:16:22 -10:00
Howard Hinnant 1e7e7a214d Simplify the implementation of format and parse:
* For format, all a type must do is implement to_stream.

* For parse, each type X must specialize parse_manip<X,CharT,Traits>.
  Each specialization must include a public typedef to itself named
  type.

* Each parse_manip specialization must have a stream extraction
  operator.

* This commit depends on expression-SFINAE.  If this commit breaks
  your build, it is likely that your compiler/version does not
  support expression-SFINAE.  To fix this NO_EXPRESSION_SFINAE
  needs to be defined in the configuration area of date.h for
  that compiler/version.
2017-02-26 14:10:10 -05:00
Howard Hinnant ffc8cd0a3b Add format and parse to tai_time, gps_time, year_month_day 2017-02-26 09:28:15 -05:00
Howard Hinnant e9d36c6200 Rewrite format and parse in terms of detail::fields<Duration>
* Add format and parse to utc_time<Duration>.
* Added more tests.
2017-02-25 20:44:59 -05:00
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