millisecond/
lib.rs

1//! [![github]](https://github.com/raeisimv/millisecond) [![crates-io]](https://crates.io/crates/millisecond) [![docs-rs]](crate)
2//!
3//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
4//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
5//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs
6//!
7//! A better way to format and display time. This crate converts 33023448000 to 1y 17d 5h 10m 48s
8
9#![no_std]
10extern crate alloc;
11
12pub use pretty::splitter::Millisecond;
13pub use pretty::{MillisecondFormatter, MillisecondOption};
14
15pub use relative::parser::RelativePart;
16
17pub mod prelude;
18pub mod pretty;
19pub mod relative;
20pub mod weekday;
21
22#[cfg(test)]
23mod tests {
24
25    #[test]
26    fn should_work_always_with_backward_compatiblity() {
27        use crate::prelude::*;
28
29        let dur = core::time::Duration::from_millis(33_023_448_000);
30        assert_eq!("1y 17d 5h 10m 48s", dur.pretty());
31        assert_eq!(
32            "1 year 17 days 5 hours 10 minutes 48 seconds",
33            dur.pretty_with(MillisecondOption::long())
34        );
35        assert_eq!("about a year ago", dur.relative());
36
37        // the previous solution still works
38        let ms = Millisecond::from_millis(33_023_448_000);
39        assert_eq!("1y 17d 5h 10m 48s", ms.pretty());
40    }
41}