A C++ date and time library extending <chrono> with calendar types, time zones, and multiple calendar systems.
Date is a C++ library that extends the standard `<chrono>` header with comprehensive date and time functionality. It provides calendar types, time zone support, and multiple calendar systems to solve the problem of complex date manipulations and timezone conversions in C++. The library offers type-safe operations and seamless integration with existing chrono types.
C++ developers working on applications requiring robust date and time handling, such as scheduling systems, financial software, or international applications with timezone considerations.
Developers choose Date for its type safety, complete IANA timezone database support, and multiple calendar systems, all while maintaining compatibility with standard C++ chrono. Its header-only design (except timezone) and standardization into C++20 make it a reliable and future-proof choice.
A date and time library based on the C++11/14/17 <chrono> header
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly extends standard C++ chrono with field-based types like year_month_day, ensuring compile-time safety and easy conversion between time points and calendar dates.
Parses the entire IANA timezone database with leap second handling, providing accurate timezone conversions essential for international applications.
Includes header-only libraries for ISO week, Julian, and Islamic calendars, enabling easy inter-calendar conversions without external dependencies.
Core components are part of C++20, ensuring long-term compatibility and reducing the risk of library deprecation.
All components except the timezone library are header-only, simplifying integration and reducing build overhead for common use cases.
Requires compiling tz.cpp, which adds a build step and can be cumbersome compared to fully header-only libraries, especially in cross-platform projects.
CMake and vcpkg support is labeled as unsupported and may cause issues, making setup difficult for users reliant on these tools.
The README admits known test failures on all non-macOS platforms, indicating potential compatibility or stability problems in certain environments.
The comprehensive nature of the library can introduce unnecessary complexity and code size for projects that only need basic date operations.