301 Commits

Author SHA1 Message Date
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
3233cbaf9a Update link to latest proposal 2017-02-13 13:00:12 -05:00
Jiangang (Jeff) Zhuang
3e906a2409 Remove a leftover output to std::cout 2017-02-13 12:17:11 -05:00
Howard Hinnant
c7f2995d0b Remove outdated warning about the version change. 2017-02-11 11:04:14 -05:00
Howard Hinnant
0d6de15043 Work around {} bug for older compilers
* iso_week.h
2017-02-08 14:44:37 -05:00
Howard Hinnant
5c09ae73f2 Work around {} bug for older compilers 2017-02-08 11:32:33 -05:00
Howard Hinnant
098223cf6d Second try at silencing "unused" warning for strerror_r 2017-02-07 17:31:14 -05:00
Howard Hinnant
6a31edcb38 Silence "unused" warning for strerror_r 2017-02-06 10:18:40 -05:00
Howard Hinnant
800ae143aa Correct the return type on two format overloads 2017-02-06 10:18:08 -05:00
Nicolas Veloz Savino
c1034550d2 Exclude expand_path when INSTALL is not defined 2017-01-30 18:02:06 -05:00
Howard Hinnant
3a9880999d Add format and parse overloads for durations 2017-01-28 16:21:21 -05:00
Howard Hinnant
ce67ee0997 Add License file 2017-01-26 19:42:42 -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
Jiangang (Jeff) Zhuang
095f66af28 resolve /etc/localtime by calling realpath 2017-01-14 07:46:05 -05:00
Jiangang (Jeff) Zhuang
ea1717e8ab Define DATE_API empty when building static lib on Windows 2017-01-10 20:31:32 -05:00
Howard Hinnant
659cdca5dc Only define get_windows_zones_install() under TIMEZONE_MAPPING 2017-01-09 21:01:39 -05:00
Howard Hinnant
634b84eb60 Introduce set_install as suggested by PR 99
* Retain install variable as a function local static to maintain
  recent fixes to initialization order problems.
2017-01-07 18:27:40 -05:00
Alexandre Dupas
41093d05d8 Use CONSTDATA in function parse making compiler without constexpr support happy 2017-01-07 13:19:02 -05:00
Jiangang (Jeff) Zhuang
c6f3dd2832 make the location of windowsZones.xml configurable 2017-01-05 20:28:12 -05:00
Howard Hinnant
e203304afd Give DATE_API a default definition. 2017-01-05 20:24:46 -05:00
Jiangang (Jeff) Zhuang
4e44539a59 export symbols on Windows 2017-01-04 20:48:34 -05:00
Roel Standaert
09537c4e19 Added missing #include <tuple> in tz.cpp
This is needed for std::tie. GCC and Clang are fine with it missing, but
my Visual Studio doesn't like it.
2017-01-03 10:23:38 -05:00
Howard Hinnant
2935f80109 Have get_version check for the file named version first 2.1.0 2017-01-01 15:02:08 -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
Jiangang (Jeff) Zhuang
64ea0a5bc3 move file scope static variables into functions to deal with static initialization order problem 2016-12-02 20:57:21 -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
2310435582 Add a format test stressing range 2016-11-26 16:15:08 -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
Paul Dreik
63e33bdf49 silence warnings in gcc 6.2 2016-11-12 15:19:46 +01:00
Howard Hinnant
33f7cc6de4 Fix overflow bug in parse 2016-11-08 12:59:00 -08:00
Howard Hinnant
27964fa642 Fix C++11 constexpr bug in year_lastweek_weekday::weeknum() 2016-11-02 14:21:26 -04:00
Howard Hinnant
887d7574b1 Default USE_SHELL_API to 1 2016-10-23 18:58:00 -04:00
Howard Hinnant
bae66f2bff Update README.md 2016-10-22 13:42:36 -04:00
Howard Hinnant
1f7325ef7f Update README.md 2016-10-20 17:14:15 -04: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
501609bacf Make those time_point conversions which can be noexcept, noexcept 2016-10-12 19:48:45 -04:00
Howard Hinnant
cfa55850c7 Fix dangling reference bug in parse 2016-10-11 10:34:59 -04:00
Howard Hinnant
ff929570f9 Update readme with R1 draft proposal 2016-10-09 20:19:18 -04:00
Howard Hinnant
fab89b205b Minor cleanups in the clocks 2016-10-09 20:11:11 -04:00
Howard Hinnant
2ba541b684 Merge branch 'master' of github.com:HowardHinnant/date 2016-10-08 16:07:01 -04:00
Howard Hinnant
81b5cc65f0 Remove static conversion functions from clocks
The free function converters are sufficient API.
2016-10-08 16:05:10 -04:00
Howard Hinnant
381cbf9a7b Fix type-o in parse 2016-10-08 15:04:27 -04:00
Howard Hinnant
f66af06870 Simplify implementation details of "chrono_io.h" 2016-10-08 15:03:33 -04:00
Howard Hinnant
d02f762e32 Update README.md 2016-10-05 17:22:42 -04:00
Howard Hinnant
3f0540cefd Update README concerning new IANA versioning 2016-09-28 18:17:26 -04:00
Howard Hinnant
19c83e47ed Get local version from NEWS instead of Makefile 2016-09-28 18:08:50 -04:00
Howard Hinnant
cedbe3c445 Update README.md 2016-09-23 18:44:23 -07:00
Howard Hinnant
cb820f9090 Merge pull request #86 from saschazelzer/clang-fedora-support
Clang on Fedora needs <climits> for the CHAR_BIT definition.
2016-09-16 09:23:34 -04:00
Sascha Zelzer
69ec0bb134 Clang on Fedora needs <climits> for the CHAR_BIT definition. 2016-09-16 07:31:04 +02:00
Howard Hinnant
3fb4d32922 Update tests for default constructible calendar types 2016-09-15 20:21:56 -04:00
Sascha Zelzer
641cd739c3 VS2013's std::vector does not support incomplete template types.
This commit works around this by exposing the zonelet class declaration
to the public tz.h header.
2016-09-15 20:10:04 -04:00
Sascha Zelzer
553affefa4 Work around a compiler bug in VS2013 with explicit conversion constructors. 2016-09-15 20:10:04 -04:00
Sascha Zelzer
570a1e699c Do not use user defined literals for VS2013 compatibility. 2016-09-15 20:10:04 -04:00
Sascha Zelzer
e107bcdef2 Use NOEXCEPT macro for VS2013 compatibility. 2016-09-15 20:10:04 -04:00
Howard Hinnant
765d0e8f7a Add parse manipulators 2016-09-15 20:10:04 -04:00
Howard Hinnant
86446a9fac format passes time_point by const& 2016-09-13 20:28:00 -04:00
Howard Hinnant
b2df8cade5 Add trivial default constructors to most calendar types 2016-09-13 20:14:43 -04:00
Howard Hinnant
845ce25bb7 Refine decision to use the std::chrono rounding modes 2016-09-10 11:57:52 -04:00
Howard Hinnant
6cb8d59886 Update Try it out link 2016-09-09 21:23:28 -04:00
Howard Hinnant
59d9cfa96d Update the availability of floor, ceil, round 2016-09-09 21:21:22 -04:00
Howard Hinnant
a7b6adae62 Add %F to parse 2016-09-09 21:01:21 -04:00
acolomitchi
3b3a27efe1 Fix for issue #79.
parse was not checking failbit aggressively enough.
2016-09-09 21:00:11 -04:00
Howard Hinnant
ea9f664a06 Update README.md 2016-09-07 20:40:45 -04:00
Howard Hinnant
32ca148d5c Work around uniform initialization bug for clang-3.6 2016-08-29 12:24:07 -04:00
Howard Hinnant
17ba481e71 Work around [Bug c++/67631] New: brace initialization bug
https://gcc.gnu.org/ml/gcc-bugs/2015-09/msg01520.html
2016-08-28 18:30:12 -04:00
Howard Hinnant
8e2de8587e Eliminate dependence on OS's gmtime_s / gmtime_r
When compiled with -arch i386, Apple's gmtime_s has a 32 bit bug meaning
it can't format dates earlier than 1901-12-13 20:45:52.
2016-08-28 14:52:41 -04:00
Howard Hinnant
7816c3b48f Eliminate dependence on OS's timegm / _mkgmtime
Apple's OS timegm has a 32 bit bug meaning it can't parse dates earlier
than 1901-12-13 20:45:52.
2016-08-28 14:26:22 -04:00
Howard Hinnant
3e25bd45f7 Clean up includes
Alphabetize and survey for missing and unneeded includes.
2016-08-27 14:18:46 -04:00
Howard Hinnant
fcdca67c5b Switch to floor in format
Need to round towards negative infinity for dates prior to the epoch,
else the wrong answer gets formatted.
2016-08-27 13:22:27 -04:00
Howard Hinnant
343e8299c7 Merge pull request #77 from gabm/FixFormating
Problem: time_points with a finer resolution than system_clock::duration cannot be formated
2016-08-26 07:43:31 -04:00
Matthias Gabriel
2fae542f6a Fix formating of time_points with a resolution finer than system_clock::duration 2016-08-26 10:55:05 +02:00
Howard Hinnant
b3e3045211 Merge pull request #75 from gabm/FixMissingLocale
Problem: date::format(..) doesn't compile
2016-08-25 11:05:51 -04:00
Matthias Gabriel
ef57f27b38 Added #include <cctype> for windows std::isdigit 2016-08-25 15:41:49 +02:00
Matthias Gabriel
ef8bba9818 Fix missing standard locale 2016-08-25 08:23:19 +02:00
Matthias Gabriel
e8f8a1ffac Added missing sstream include 2016-08-25 08:20:14 +02:00
Howard Hinnant
ebc20c139b 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:54:24 -04:00
Howard Hinnant
7e9d9075d9 Miscellaneous changes while enabling iOS support
Put all of the logic for discovering iOS in one place in ios.h.

Make TAR_DEBUG configurable and default it to 0.

Various whitespace style pickiness.
2016-08-23 20:55:13 -04:00
schmidt9
927fc619ef Namespaces, ios macro 2016-08-21 21:37:24 +03:00
Howard Hinnant
952857e721 Correct type-o in error message 2016-08-14 20:35:22 -04:00
schmidt9
78025bf922 Add iOS support 2016-08-14 20:35:22 -04:00
Howard Hinnant
4ee985fef3 Add link to Cppcon 2016 abstract. 2016-08-14 20:34:49 -04:00
Howard Hinnant
0663b7aeb3 Allow only one decimal point to be read under "%Ez". 2016-08-09 23:23:55 -04:00