143 Commits

Author SHA1 Message Date
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
Tomasz Kamiński
7c69f1570d Changed invocation to match specification
Slight difference between invocation on lvalue of clock_time_conversion
object and prvalue.
2017-11-25 22:01:12 +01:00
Tomasz Kamiński
b13c859ff1 Restored deprecated to_clock_time function.
Fixed the to_utc_time(const gps_time<Duration>& t) function
to correctly use clock_cast<utc_time>.

Added test to deprecated functions.
2017-11-24 23:37:32 +01:00
Tomasz Kamiński
d4592bd497 Maked clock_time_conversion as const and used alias.
Marked operator() of all supplied clock_time_conversion overload
as const.
Changed input type to sys_time/utc_time alias when possible.
Used consitient nomencalture: st for sys_time, ut for utc_time
and tp for time in different clock.
2017-11-24 23:26:56 +01:00
Tomasz Kamiński
58a4a9518a Mismatch in return type of converting function is now hard error.
Change the implementation, in the way that mismatch in return
type of the from/to_sys/utc functions (not returning time_point,
or returning time_point with inappropriate clock) leads to
hard error.

Added appropariate fail test for to_sys function, including:
* returning an int
* returning time_point of wrong clock
* reutrning reference to time_point
2017-11-24 22:23:50 +01:00
Tomasz Kamiński
e1099ef3ab Implemented clock_cast function.
Added an clock_time_conversion trait, that should be specialized
with SourceClock and DestClock respectively and provide an function
that convert time_point in SourceClock to equivalent time_point
in DestClock.

This function has following specializations:
1) <sys_clock, utc_clock> - convert sys_time to utc_time
2) <utc_clock, sys_clock> - convert utc_time to sys_time
3) <Clock, sys_clock>     - calls Clock::to_sys if it returns sys_time
4) <Clock, utc_clock>     - calls Clock::to_utc if it returns utc_time
5) <sys_clock, Clock>     - calls Clock::from_sys if it returns time_point<Clock>
5) <utc_clock, Clock>     - calls Clock::from_utc if it returns time_point<Clock>

Implemented an clock_cast<DestClock>(time_point<SourceClock, Dur> st), that
works as follow:
1) If DestClock is same as SourceClock, returns std
2) Otherwise, if clock_conversion<SourceClock, DestClock> available, uses it
3) Otherwise, if tries using clock_conversion<SourceClock, CommClock>
   and clock_conversion<CommClock, DestClock> for CommClock being utc_time
   or sys_time
4) Otherwise, tries using clock_conversion<SourceClock, utc_clock>
   and clock_conversion<sys_clock, DestinationClock> or reversed (firstly
   convert to sys_clock, then to utc_clock) to convert.
2017-11-24 17:55:15 +01:00
Howard Hinnant
c286981b3b Fix improper application of GCC diagnostic suppression 2017-11-21 10:07:31 -05:00
Howard Hinnant
9ca582d9da Silence GCC conversion warning for bitfields
* Used only in weekday_indexed.
2017-11-20 14:50:48 -05:00
Tullio Menga
f4b12ab023 Adjust HAS_CHRONO_ROUNDING macro for MSVC with v140_clang_c2 and LLVM-vs2014 2017-11-20 11:45:04 -05:00
Alexander Karatarakis
bd51baf31e msvc token workaround 2017-11-19 18:52:56 -05:00
Howard Hinnant
d97bc984c7 Change default_zone from "UTC" to "Etc/UTC"
* zoned_traits<const time_zone*>::default_zone()
  should not depend on a Link, but on a Zone.
2017-11-19 18:17:09 -05:00
Howard Hinnant
4832ea0ddb Move HAS_STRING_VIEW to date.h 2017-11-17 11:09:17 -05:00
Tullio Menga
ec514101a6 minor patches to build on Windows with MSVC v140_clang_c2 and LLVM-vs2014 2017-11-15 07:20:07 -05:00
Howard Hinnant
e12f7c66f0 Unconstrain make_zoned for VS-2015 2017-11-07 13:01:16 -07:00
Howard Hinnant
3a5e8c9384 Silence clang warning 2017-10-30 13:48:09 -04:00
Howard Hinnant
fa6529a2fc Allow zoned_time conversion among different TimeZonePtr types 2017-10-28 18:20:34 -04:00
Howard Hinnant
25696b7fb3 Optimize to_stream for zoned_time
* Decrease the number of lookups in the database from 2 to 1.
2017-10-24 15:44:41 -04:00
Howard Hinnant
9381e894a5 Specify exception constructors
* For nonexistent_local_time and ambiguous_local_time.
* Simplify the constructors.
* Make these exceptions usable for custom time zones.
2017-10-24 12:12:31 -04:00
Pavel Davydov
202041e531 Add a workaround for a missing operator<< for gcc 5 on linux. See issue #205 for details. 2017-10-24 11:02:54 -04:00
Howard Hinnant
66a97f907e to_stream sets failbit if required to supply a bad name:
* for an invalid month
* for an invalid weekday
2017-10-15 13:57:19 -04:00
Howard Hinnant
f328d8c84a Have format set exceptions(failbit | badbit)
*  Be sure if something bad happens under the hood it is not silently
   swallowed.
2017-10-14 20:42:26 -04:00
Manlio Morini
8b9f0515b5 Replacing 0 with nullptr to avoid GCC warning
All the calls to `std::time_get::get` had `0` as end-of-range iterator.

E.g.

    auto& f = use_facet<time_get<CharT>>(is.getloc());
	// ...
    f.get(is, 0, is, err, &tm, command, fmt+1);
              ^

Using `nullptr` instead of `0` doesn't trigger the GCC 5.x warning:

> warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]
2017-10-12 19:51:06 +02:00
Tomi Valkeinen
2032fccbb7 Fix valgrind warning about uninitialized variable use in to_stream()
tm variable is not initialized in to_stream(), and valgrind warns about
"Conditional jump or move depends on uninitialised value(s)".

This is a false positive, as strftime always reads tm_hour, even if it
ends up never using it. To silence the warnings, initialize tm to zero.
2017-10-03 15:22:49 -04:00
Howard Hinnant
3acb299f3f Rename TZ_DB to tzdb
* Bring into alignment with proposal
* TZ_DB alias left behind for backwards compatibility
2017-09-30 14:48:25 -04:00
Markus Werle
3c3ba68906 Proposal for an alternative directory structure 2017-09-22 20:03:16 -04:00