GitHunt
LU

Fast, flexible Date implementation in Rust

Date

ci
codecov
release
docs

The date crate provides a simple, easy-to-use Date struct (and corresponding macro). Date
provides storage for a single Gregorian calendar date.

Date can currently represent any valid calendar date between years -32,768 and 32,767.

Examples

Making a date:

use date::Date;

let date = Date::new(2012, 4, 21);

You can also use the date! macro to get a syntax resembling a date literal:

use date::date;

let date = date! { 2012-04-21 };

Overflow

Date provides an overflowing_new function that allows for overflow values (for example,
February 30 or December 32), and maps them accordingly. This allows users to perform certain
mathematical computations without having to do their own overflow checking.

Features

date-rs ships with the following features:

  • diesel-pg: Enables interop with PostgreSQL DATE columns using Diesel.
  • duckdb: Enables interop with duckdb crate.
  • easter: Enables calculation for the date of Easter (Gregorian calenda).
  • log: Adds log::kv::ToValue implementation.
  • serde: Enables serialization and desearialization with serde. (Enabled by default.)
  • tz: Enables support for time-zone-aware date construction.

Languages

Rust100.0%

Contributors

MIT License
Created March 14, 2024
Updated November 1, 2025
lukesneeringer/date-rs | GitHunt