astrolabe 0.1.0

Date and time library for Rust. Aims to be feature rich, lightweight and easy-to-use.
Documentation

Overview

Astrolabe is a date and time library for Rust which aims to be feature rich, lightweight (zero dependencies) and easy-to-use. It is build around DateTime, a wrapper around std::time::SystemTime which implements formatting and manipulation functions.

Features

  • Formatting
    • RFC3339 timestamp
    • Formatting with format strings based on Unicode Date Field Symbols. (Which allows formatting SystemTime into basically any string format)
  • Manipulation
  • Timezone
    • Specify a timezone offset which will be applied in any format function
  • Zero dependencies

Example

A basic example which demonstrates creating, formatting and manipulating a DateTime instance.

use astrolabe::{DateTime, Precision, Unit};

// Create a DateTime instance from year, month, and days (day of month)
let date_time = DateTime::from_ymd(2022, 5, 2).unwrap();

// Use the format function to freely format your DateTime instance
assert_eq!("2022/05/02", date_time.format("yyyy/MM/dd").unwrap());

// Create a new instance with a modified DateTime
// The previous instance is not modified and is still in scope
let modified_dt = date_time.add(11, Unit::Hour).add(23, Unit::Min);

assert_eq!("2022/05/02 11:23:00", modified_dt.format("yyyy/MM/dd HH:mm:ss").unwrap());
assert_eq!("2022-05-02T11:23:00Z", modified_dt.format_rfc3339(Precision::Seconds));

To see all implementations for the DateTime struct, check out it's documentation.

MSRV

This crate uses the Rust 2021 Edition and requires at least version 1.56.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.