7 releases (4 breaking)
0.4.0 | May 18, 2023 |
---|---|
0.3.0 | Apr 11, 2023 |
0.2.0 | Aug 25, 2022 |
0.1.0 | Jul 24, 2022 |
0.0.2 | Jul 13, 2022 |
#69 in Date and time
143 downloads per month
235KB
4.5K
SLoC
Astrolabe
Documentation | Github | Crate | Example
Overview
Astrolabe is a date and time library for Rust which aims to be feature rich, lightweight (zero dependencies) and easy-to-use. It implements formatting, parsing and manipulating functions for date and time values.
Features
- Formatting and parsing with format strings based on Unicode Date Field Symbols
- RFC 3339 timestamp parsing and formatting
- Manipulation functions to add, subtract, set and clear date units
- Cron expression parser (With feature flag
cron
) - Timezone offset
- Zero dependencies
- Serde serializing and deserializing (With feature flag
serde
)
Example
A basic example which demonstrates creating, formatting and manipulating a DateTime
instance.
use astrolabe::{DateTime, TimeUtilities, Precision};
// 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"));
// 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_hours(11).unwrap()
.add_minutes(23).unwrap();
assert_eq!("2022/05/02 11:23:00", modified_dt.format("yyyy/MM/dd HH:mm:ss"));
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.