Commit Graph
69 Commits
Author SHA1 Message Date
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
Howard Hinnant 23ad937af0 Link to R0 2016-10-09 20:19:41 -04:00
Howard Hinnant 6133d1e636 Minor cleanups in the clocks 2016-10-09 20:13:02 -04:00
Howard Hinnant 176ffe7930 First commit of D0355R1 2016-10-09 20:12:32 -04:00
Howard Hinnant 026caba1c4 Remove static conversion functions from clocks
The free function converters are sufficient API.
2016-10-08 16:06:37 -04:00
Howard Hinnant 4aacc0b0b3 Add parse manipulators 2016-09-14 22:05:47 -04:00
Howard Hinnant ddb826e490 format passes time_point by const& 2016-09-13 20:28:42 -04:00
Howard Hinnant bcdf8acb8b Add trivial default constructors to most calendar types 2016-09-13 20:15:24 -04:00
Howard Hinnant d7e38aa24f Add %F to parse 2016-09-09 21:07:05 -04:00
Howard Hinnant 47b51473c5 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:56:17 -04:00
schmidt9 e641f69667 iOS instructions added 2016-08-23 20:57:50 +03:00
Howard Hinnant 54a8b2dc19 Allow optional leading hours digit in offset when a colon is required. 2016-08-08 18:25:59 -04:00
Howard Hinnant bddd8be2aa Document INSTALL, and reorganize Installation instructions. 2016-08-06 15:06:58 -04:00
Howard Hinnant 4e3a40a6dd Time something real. 2016-07-30 23:15:02 -04:00
Howard Hinnant 151d050391 Introduce chrono_io.h 2016-07-30 17:45:14 -04:00
Howard Hinnant 204a17cba8 Fix type-o. 2016-07-04 16:33:59 -04:00
Howard Hinnant 7de9902c60 Add Islamic calendar. 2016-07-04 16:32:31 -04:00
Howard Hinnant 48d61f2631 Add type diagrams. 2016-06-27 22:36:48 -04:00
Howard Hinnant 0fc9f3f879 Introduce julian.h 2016-06-26 18:49:51 -04:00
Howard Hinnant d1f8e3ab7d Fix minor type-o 2016-06-17 20:39:52 -04:00
Howard Hinnant 9fb5e05eba 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:04:31 -04:00