Commit Graph
74 Commits
Author SHA1 Message Date
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
Howard Hinnant 0197889505 Update to Sunday constants 2018-06-11 15:14:44 -04:00
Tomasz Kamiński db60c5eb8e Unit test and typo fix 2018-06-11 10:45:41 -04:00
Tomasz Kamiński 9f1c4b0110 Implemented clock_cast for local_time.
Implemented clock_time_conversion<D, local_t> calling D::from_local
and clock_time_conversion<locat_t, S> calling S::to_local.

To avoid ambiguities addes:
* clock_time_conversion<local_t, local_t> - idenitity
* clock_time_conversion<local_t, utc_clock> - same as default (utc_clock::to_local)
* clock_time_conversion<utc_clock, local_t> - same as default (utc_clock::from_local)

In addition, as std::chrono::system_clock cannot be edited, added:
* clock_time_conversion<local_t, std::chrono::system_clock> - assumes same epoch
* clock_time_conversion<std::chrono::system_clock, local_t> - assumes same epoch
They will be required to resolve amibiguity anyway.
2018-06-11 10:45:41 -04:00
Tomasz Kamiński da15227f6c Implemented to/from_local functions for utc/tai/gps.
Implemented to_local and from_local functions for utc_clock,
tai_clock and gps_clock. For the tai/gps clock used this function
for defining the io - we delegate to serializing/parsing local
time.

The drwaback is that the local_time cannot properly represent
leap second in the UTC time, so separate serialization is needed.
2018-06-11 10:45:41 -04:00
Howard Hinnant d4fb7eb76d Put unspecified_month_disambiguator in namespace detail 2018-06-10 16:22:21 -04:00
Tomasz Kamiński 0e3e84fd56 Used suggested Tim Song implementation 2018-06-10 16:22:21 -04:00
Tomasz Kamiński 3eac2d376e Revert "Fixed addition of multi-year duration to year_month."
This reverts commit 328cecaa56.
2018-06-10 16:22:21 -04:00
Howard Hinnant f5f4d76936 Replace save_stream with save_ostream
* In islamic.h and julian.h
2018-06-10 15:44:43 -04:00
Howard Hinnant c7b69d949a Change the encoding for an invalid weekday from 7 to 8 2018-06-08 09:50:40 -04:00
Howard Hinnant 48baa942fc Use uncaught_exceptions in C++17 2018-06-06 13:52:23 -04:00
Howard Hinnant be2ec2310b Emphasize Sunday over sun in the implementation
*  Keep the three letter lower case spellings for backwards
   compatibility purposes.
2018-06-03 13:55:00 -04:00
Howard Hinnant 40b83654b6 [API BREAKING] Remove conversion from weekday to unsigned
* There has been a great deal of anguish over the encoding of
  weekdays:  whether [0, 6] maps to [Sunday, Saturday] or
  [1, 7] maps to [Monday, Sunday].  This commit attempts
  to address that issue, but will break a small amount of
  code at compile-time.  See below on how to fix that.

* The weekday constructor used to accept [0, 6] to represent
  [Sunday, Saturday].  It now accepts [0, 7] to represent
  [Sunday, Saturday] with both 0 and 7 mapping to Sunday.

* The conversion from weekday to unsigned has been removed.

* To convert a weekday to unsigned replace:

      auto u = unsigned{wd};

  with:

      auto u = (wd - Sunday).count();

  This maps [Sunday, Saturday] to [0, 6], which is the
  C/POSIX mapping.  If you prefer the ISO mapping
  ([Monday, Sunday] -> [1, 7]), then do:

      auto u = (wd - Monday).count() + 1;
2018-06-02 22:56:10 -04:00
Eugene Golushkov 1fdda81a30 fixed build with latest VS2017 v15.7.1; toolset MSVC 14.14 2018-06-02 16:14:18 -04:00
apo f33e179936 Eliminate use of uninitialized offset. 2018-05-25 09:56:34 -04:00
Tomasz Kamiński 328cecaa56 Fixed addition of multi-year duration to year_month.
* Added new overloads for operator+/- between year_month and duration
  that is convertible to years, so it is better candidate for operands
  that are convertible to both years and months. To preserve
  functionality, this operator is conditionally noexcept.

* Reworked year_month_day, year_month_day_last, year_month_weekday,
  and year_month_weekday_last.

* Added tests for this new functionality.
2018-05-12 18:21:24 -04:00
Howard Hinnant 5d15157bbb Fix bug for parsing negative offsets of less than 1h 2018-05-05 12:01:56 -04:00
Howard Hinnant a91ceefb4e Allow %H %M and %S to deal with negative durations 2018-04-23 20:31:28 -04:00
Howard Hinnant 88c661e9f3 Fix zoned_time deduction guides 2018-04-23 20:30:58 -04:00
Howard Hinnant c665992a6e Allow heterogeneous zoned_time constructors
taking {string_view, zoned_time}
2018-04-21 17:45:52 -04:00
Howard Hinnant 9d0bcdb63f Fix deduction error in parse where only offset is requested 2018-04-18 21:56:11 -04:00
Howard Hinnant 973bd393bc Respect and minimize tie/flush in from/to_stream
* Save/restore tie, setting it to nullptr during the operation
* On construction tie_->flush()
* For ostreams only, flush if unitbuf
2018-04-18 21:47:15 -04:00
Howard Hinnant d53db7a1cb And yet more fixes to allow duplicate flags on parse 2018-04-15 15:32:24 -04:00
Howard Hinnant e5c69d84ab Fix constexpr issue for VS2015 2018-04-09 11:01:58 -04:00
Howard Hinnant b48a18a1d9 More fixes to allow duplicate parsing 2018-04-08 15:49:06 -04:00
Howard Hinnant cdb4b276d9 Allow duplicate parsing into the same fields
* as long as all duplicates produce consistent results.
2018-04-07 21:42:00 -04:00
Howard Hinnant 1d9e49ea21 to_stream sets failbit if unable to format
*  If a formatting flag requests data that is not available in
   the Streamable object, or if the Streamable object answers !ok(),
   failbit is set.
2018-04-06 11:19:44 -04:00
Howard Hinnant 0125d330ab Correct to_stream/from_stream handling of stream data
* to_stream and from_stream now reset the stream formatting state to
  default settings on entry, and restore the stream state on exit.

* to_stream and from_stream now correctly handle mis-modified flags.

* Fix %h to be equivalent to %b instead of %B.

* This addresses issues 319, 320 and 321.
2018-03-31 13:06:57 -04:00
Howard Hinnant 700489e475 Introduced full weekday and month names
* The standardized version of this library has std::chrono::January
  and std::chrono::Sunday in place of std::chrono_literals::jan and
  std::chrono_literals::sun.  Compatible names added to namespace
  date to ease transition from this lib to std::chrono.  The old
  names are retained for backwards compatibility.
2018-03-18 18:27:04 -04:00
Howard Hinnant 1e8ab50f82 Test modifications for standardization 2018-03-14 22:49:04 -04:00
Howard Hinnant 0bde4ba8c8 Make the parsing of minutes optional under the flag %z 2018-03-03 11:57:03 -05:00
Howard Hinnant 43d8a4eab0 Range check minutes under parse 2018-03-02 09:03:41 -05:00
mwu ca4036a4b0 Explicitly qualify std::string. Having a global scope string type shall not break the compilation anymore. 2018-02-23 21:17:26 -05:00
Alexander Karatarakis a1ceec19fe Workaround for MSVC 2018-02-20 11:51:28 -05:00
Benno Evers 2acf403bcd Dont include ios.h unconditionally.
The include in tz.cpp was changed to only include the ios.h header
when compiling on apple platforms, as the documentation states that
only the four files date.h, tz.h, tz_private.h, and tz.cpp should be
required to use the time zone library.

Additionally, the ios.mm file was moved to src/ since it contains
C++ source code.
2018-01-24 20:24:10 -05:00
Howard Hinnant 3b8372f4fa Avoid use of undeclared to_utc_time.
* Fixes https://github.com/HowardHinnant/date/issues/289
2018-01-18 15:55:58 -05:00
Xuesong Hu 6941691de4 implement current_zone() for iOS using native API from iOSUtils 2018-01-12 14:59:01 -05:00
Michael Maroszek 09b78ba92c bump msvc define to fix compile issue on MSVC 15.6 2018-01-12 10:51:05 -05:00
Scott Beil 2b6ee6378c minutes fix 2018-01-05 18:42:48 -05:00
Howard Hinnant b49bdc3ca7 Add missing include <memory> for unique_ptr 2017-12-06 10:12:49 -05:00
Howard Hinnant c7e5a4d08e Add posix-style time zone example: ptz.h 2017-12-03 14:40:01 -05:00
Howard Hinnant a3e8f399c4 ifdef out clock_cast for VC-2017 and earlier
* Clients report it can't handle the C++11
* Triggered to be enabled on VC-number-next
* Deprecated API (to_xxx_time) rewritten to be independent of
  clock_cast.
* Whitespace changes to bring column length down to 90.
2017-11-30 15:40:37 -05:00
Howard Hinnant 443a29df53 Improve range check on year
* The previous fix broke parsing of sub-date quantities such as
  durations.
2017-11-30 12:06:51 -05:00
Howard Hinnant 1902b8e8fb Range check year on parse 2017-11-30 10:45:30 -05:00
Howard Hinnant c513a20691 Fix off-by-one bug in iso_week::year_lastweek_weekday
* The conversion from year_lastweek_weekday to sys_days
  and local_days had an off by one error.
* Added test for this case.
2017-11-30 10:28:14 -05:00
Howard Hinnant 9b88763dbf Remove noexcept from tai_clock::now() and gps_clock::now()
*  These functions may try to initialize the tzdb which
   could fail.
2017-11-26 21:24:45 -05:00
Howard Hinnant 15a63ec819 Updated on behalf of schmidt9 2017-11-26 14:41:40 -05:00
Tomasz Kamiński 543315b700 Reversed order of arguments to clock_time_conversion.
Now the order of argument matches the clock_cast function.
The test only is_clock_castable trait still matches is_convertible
order of arguments.
2017-11-26 13:50:21 -05:00