• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

ci/H17-Apr-2021-3527

cmake/H17-Apr-2021-129

include/date/H17-Apr-2021-23,24819,549

src/H17-Apr-2021-4,2833,704

test/H17-Apr-2021-11,4676,525

.gitignoreH A D17-Apr-20213 KiB195194

.travis.ymlH A D17-Apr-20213.3 KiB148130

README.mdH A D17-Apr-20214.6 KiB8554

compile_fail.shH A D17-Apr-2021358 1711

test_fail.shH A D17-Apr-202173 116

README.md

1# Date
2
3[![Build Status](https://travis-ci.org/HowardHinnant/date.svg?branch=master)](https://travis-ci.org/HowardHinnant/date)
4[![Join the chat at https://gitter.im/HowardHinnant/date](https://badges.gitter.im/HowardHinnant/date.svg)](https://gitter.im/HowardHinnant/date?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5
6---
7
8**[Try it out on wandbox!](https://wandbox.org/permlink/oyXjibyF680HHoyS)**
9
10## Summary
11
12This is actually several separate C++11/C++14/C++17 libraries:
13
141. `"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.
15
16    * Documentation: http://howardhinnant.github.io/date/date.html
17    * Video: https://www.youtube.com/watch?v=tzyGjOm8AKo
18    * Slides: http://schd.ws/hosted_files/cppcon2015/43/hinnant_dates.pdf
19
201. `"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.
21
22    * Documentation: http://howardhinnant.github.io/date/tz.html
23    * Video: https://www.youtube.com/watch?v=Vwd3pduVGKY
24    * Slides: http://schd.ws/hosted_files/cppcon2016/0f/Welcome%20To%20The%20Time%20Zone%20-%20Howard%20Hinnant%20-%20CppCon%202016.pdf
25
261. `"iso_week.h"` is a header-only library built on top of the `"date.h"` library which implements the ISO week date calendar.
27
28    * Documentation: http://howardhinnant.github.io/date/iso_week.html
29
301. `"julian.h"` is a header-only library built on top of the `"date.h"` library which implements a proleptic Julian calendar which is fully interoperable with everything above.
31
32    * Documentation: http://howardhinnant.github.io/date/julian.html
33
341. `"islamic.h"` is a header-only library built on top of the `"date.h"` library which implements a proleptic Islamic calendar which is fully interoperable with everything above.
35
36    * Documentation: http://howardhinnant.github.io/date/islamic.html
37
38## Standardization
39
40Slightly modified versions of `"date.h"` and `"tz.h"` were voted into the C++20 working draft at the Jacksonville FL meeting on 2018-03-17:
41
42* http://howardhinnant.github.io/date/d0355r7.html
43
44## Build & Test
45
46The recommended way to use any of these libraries besides `"tz.h"` is to just include it.  These are header-only libraries (except `"tz.h"`).
47
48To use `"tz.h"`, there is a single source file (`src/tz.cpp`) that needs to be compiled. Here are the recommended directions:  https://howardhinnant.github.io/date/tz.html#Installation.
49
50One can run tests by cd'ing into the `test` subdirectory and running `testit`.  There are known failures on all platforms except for macOS.  And even on macOS if C++11 is used.  If any of these failures present problems for you, there exist workarounds.
51
52Additionally there is _unsupported_ support for [vcpkg](https://github.com/Microsoft/vcpkg) and [CMake](https://cmake.org/).  I don't personally use or maintain these systems as for me they cause more problems than they solve (for this small project).  If you would like to contribute to these build systems please feel free to file a PR.
53
54You can download and install Date using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
55
56    git clone https://github.com/Microsoft/vcpkg.git
57    cd vcpkg
58    ./bootstrap-vcpkg.sh
59    ./vcpkg integrate install
60    vcpkg install date
61
62The Date port in vcpkg is updated by Microsoft team members and community contributors. If the version falls behind, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
63
64You can optionally build using [CMake](https://cmake.org/). Here is a guide of how to build and test using the CMake Makefile generator.
65
66```bash
67mkdir build
68cd build
69cmake -DENABLE_DATE_TESTING=ON -DBUILD_TZ_LIB=ON ../
70cmake --build . --target testit # Consider '-- -j4' for multithreading
71```
72## Projects using this library
73
74* www.safe.com
75* www.webtoolkit.eu/wt
76* https://github.com/ViewTouch/viewtouch
77* https://routinghub.com
78* https://github.com/valhalla
79* https://github.com/siodb/siodb
80* https://github.com/KomodoPlatform/atomicDEX-Pro
81* https://github.com/Kotlin/kotlinx-datetime
82* https://github.com/royalbee/jewish_date
83
84If you would like your project (or product) on this list, just let me know.
85