Commit Graph
89 Commits
Author SHA1 Message Date
Howard Hinnant ddfaabea00 Reordered template parameter list in several places
* Make consistent with function argument list order.
2017-06-18 12:10:12 -04:00
Howard Hinnant f8f2c9db10 Add paragraph to [time.parse] concerning failbit
*  The entire format string must be parsed, else failbit gets set.
2017-06-18 11:55:34 -04:00
Howard Hinnant ed91190978 Refer to ios_base::failbit, not failbit 2017-06-18 11:49:25 -04:00
Howard Hinnant f62ab2a2e0 Make constexpr literals inline
* Consistent with P0607R0.
2017-06-18 11:43:53 -04:00
Howard Hinnant 6fcb43311f Remove spurious 'class' from operator<< in many places. 2017-06-18 11:32:42 -04:00
Howard Hinnant 5d53bd2244 Fix missing template parameters in zoned_time operator<< 2017-06-18 11:28:09 -04:00
Howard Hinnant 60127222cd Remove spurious Duration template parameter
* From to_stream and from_stream.
* This was just a copy/paste error.
2017-06-18 11:16:48 -04:00
Howard Hinnant 59d8931136 Correct the return type of to_file_time(const sys_time<Duration>& t)
* The mapping between sys_time and file_time can occur at precisions
  coarser than a second because the only anticipated difference
  between these clocks is the epoch, and not the inclusion of leap
  seconds.
2017-06-18 10:53:45 -04:00
Howard Hinnant e7dd17e572 Remove noexcept from to_file_time 2017-06-17 14:44:28 -04:00
Howard Hinnant a83b047ef9 Make file_clock::now() noexcept 2017-06-17 13:30:36 -04:00
Howard Hinnant a6c4c17e9a Remove noexcept from to_XXX_time conversion functions
* The Duration copy might throw.
2017-06-17 13:28:43 -04:00
Howard Hinnant 4f24af489c Make wide string literals in to_stream 2017-06-17 13:22:49 -04:00
Howard Hinnant 87620f4d1f Make to_stream and from_stream return a stream reference 2017-06-17 13:12:27 -04:00
Howard Hinnant 8b51803d7b Minor cleanup in is_clock 2017-06-17 10:34:54 -04:00
Howard Hinnant 7ffdc2450a Reword is_clock and add is_clock_v 2017-06-17 10:28:00 -04:00
Howard Hinnant 8c34cf1e8f Add link to reference 1 2017-06-17 00:00:03 -04:00
Howard Hinnant 5bc5a7f0bb Fill out link specification 2017-06-16 21:58:58 -04:00
Howard Hinnant 34e83bcf84 Fill out leaps specification 2017-06-16 21:47:54 -04:00
Howard Hinnant 09f16d53a2 Remove note in [thread.req.paramname] 2017-06-16 15:06:45 -04:00
Howard Hinnant 50c0111980 Improve wording in [thread.req.paramname] 2017-06-16 14:53:32 -04:00
Howard Hinnant ff07f87b5b Run through spell checker 2017-06-16 13:35:13 -04:00
Howard Hinnant 27410b5095 Initial draft of D0355R3 2017-06-16 13:22:30 -04:00
Howard Hinnant acf922d4ba Set failbit instead of throw within to_stream
* This is for consistency with other std streaming operations.
2017-06-12 21:03:01 -04:00
Howard Hinnant e29fdf3374 Document USE_OS_TZDB. 2017-06-04 21:44:45 -04:00
Howard Hinnant 81b6367e98 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:19 -04:00
Howard Hinnant 6618a2d3a7 Clarify how from_stream handles whitespace. 2017-05-04 16:32:22 -04:00
Howard Hinnant b83f3412d0 Move chrono_io.h functionality into date.h. 2017-04-13 21:02:00 -04:00
Howard Hinnant 0dd1d499ae Restrict parse of %Z to valid timezone names and abbrev. 2017-04-13 14:23:42 -04:00
Howard Hinnant ea8a24504d Do not change time_point of an invalid date is parsed. 2017-04-13 14:17:04 -04:00
Howard Hinnant c036ef54bd Update %y documentation to specify implicit century. 2017-04-03 12:16:10 -04:00
Howard Hinnant c10b729273 Rewrite of the to_stream/format/from_stream/parse docs:
* The bulk of the description is moved from tz.html to date.html.

* The format and parse flags are now described in detail, instead of
  implicitly relying on the C and POSIX specs.  This gives me room
  to specify a few corner cases that are either under-specified in
  the official specs, or to add extensions.

* The from_stream / to_stream specifications are now located with
  each specific type that implements them.  This allows more detailed
  documentation as to how each type interacts with the from_stream /
  to_stream system.

* The format and parse functions are now more clearly separated from
  to_stream and from_stream, and are documented to be nothing more
  than syntax sugar on top of any type that choses to implement
  to_stream or from_stream.
2017-04-01 22:48:54 -04:00
Howard Hinnant 82c6d6a3a4 Enable parse and format for more types:
* year
    * month
    * day
    * weekday
    * year_month
    * month_day
2017-03-25 17:45:39 -04:00
Howard Hinnant f3b61aab48 Document set_install. 2017-03-22 22:52:07 -04:00
Howard Hinnant c12319552a Add from_stream 2017-03-02 13:17:01 -10:00
Howard Hinnant 6466e58f94 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:25 -05:00
Howard Hinnant 5263c7b54c Add format and parse to tai_time, gps_time, year_month_day 2017-02-26 09:28:01 -05:00
Howard Hinnant 4f89141e56 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:45:16 -05:00
Howard Hinnant fa86a381d1 Add format and parse overloads for durations 2017-01-28 16:21:42 -05:00
Howard Hinnant e04ec9aa80 Fix type-o 2016-11-27 11:48:25 -05:00
Howard Hinnant 88f3c85517 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:35 -05:00
Howard Hinnant 5eb10b747f 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:54:20 -05:00
Howard Hinnant d99e39f5d8 Default USE_SHELL_API to 1 2016-10-23 18:56:58 -04:00
Howard Hinnant ae68278245 Add unary operators + and - to year 2016-10-19 12:01:51 -04:00
Howard Hinnant 769dc09f28 Minor polish 2016-10-16 23:13:36 -04:00
Howard Hinnant 41657bc50e Embellish issue 2. 2016-10-15 21:15:24 -04:00
Howard Hinnant dd209e205e Add issues list to d0355r1 2016-10-15 21:02:01 -04:00
Howard Hinnant 5b2aa5f4be Lots of changes motivated by reviews 2016-10-15 17:32:14 -04:00
Howard Hinnant b2b1d520c5 Make those time_point conversions which can be noexcept, noexcept 2016-10-12 19:48:07 -04:00
Howard Hinnant 2c16e09438 Replace CharT with charT and Traits with traits 2016-10-12 19:32:31 -04:00
Howard Hinnant a7dd3132e0 Link R1 to Cppcon 2016 timezone presentation 2016-10-09 20:36:48 -04:00