Howard Hinnant e79634f61d Optimize initialization of tz database
* Defer expensive parts of the initialization
* The deferment can be turned off with -DLAZY_INIT=0
2016-04-05 16:33:20 -07:00
2016-04-03 18:57:02 -04:00
2016-03-27 21:16:23 -04:00
2015-08-08 17:03:43 -04:00
2015-12-03 13:41:11 +02:00
2016-04-05 16:33:20 -07:00
2016-04-05 16:33:20 -07:00

This is actually three separate C++11/C++14 libraries:

  1. "date.h" is a header-only library which builds upon <chrono>. It adds some new duration types, and new time_point types. It also adds "field" types such as year_month_day which is a struct {year, month, day}. And it provides convenient means to convert between the "field" types and the time_point types. See http://howardhinnant.github.io/date_v2.html for more details.

    Here is the Cppcon 2015 presentation on date.h: https://www.youtube.com/watch?v=tzyGjOm8AKo

    Here are the Cppcon 2015 slides on date.h: http://schd.ws/hosted_files/cppcon2015/43/hinnant_dates.pdf

  2. "tz.h" / "tz.cpp" are a timezone library built on top of the "date.h" library. This timezone library is a complete parser of the IANA timezone database. It provides for an easy way to access all of the data in this database, using the types from "date.h" and <chrono>. The IANA database also includes data on leap seconds, and this library provides utilities to compute with that information as well. See http://howardhinnant.github.io/tz.html for more details. See the auto_download branch for an experimental version of this library which auto-installs the latest version of the IANA timezone database (if you are connected to the internet).

  3. "iso_week.h" is a header-only library built on top of the "date.h" library which implements the ISO week date calendar. See http://howardhinnant.github.io/iso_week.html for more details.

Description
A date and time library based on the C++11/14/17 header
Readme
Languages
C++ 97.5%
CMake 1%
Objective-C++ 0.9%
Shell 0.5%
C 0.1%