9 releases (4 breaking)
new 0.5.1 | Feb 20, 2025 |
---|---|
0.5.0 | Feb 20, 2025 |
0.4.1 | Feb 16, 2025 |
0.3.0 | Sep 17, 2024 |
0.1.0 | Jun 27, 2024 |
#98 in Date and time
534 downloads per month
45KB
1K
SLoC
Millisecond crate
A better way to format and display duration, which converts 33023448000ms
to 1y 17d 5h 10m 48s
or relatively timestamp ofabout a year ago
.
Install
In your Rust project's root directory run:
$ cargo add millisecond
Example
// Activate and bring the crate into scope
use millisecond::prelude::*;
fn main() {
// Obtain a duration instance
let dur = core::time::Duration::from_millis(33_023_448_000);
println!("{}", dur.pretty());
// displays: 1y 17d 5h 10m 48s
println!("{}", dur.pretty_with(&MillisecondOption::long()));
// displays: 1 year 17 days 5 hours 10 minutes 48 seconds
println!("{} ago", dur.relative());
// displays: about a year ago
// the previous solution still works
let ms = Millisecond::from_millis(33_023_448_000);
println!("{}", ms.pretty());
// displays: 1y 17d 5h 10m 48s
}
Options
Customize the parser and the output format using the MillisecondOption
struct.
Option | Description | Example |
---|---|---|
long |
uses full and descriptive labels for time units, such as years instead of abbreviated forms like y . |
2y -> 2 years |
dominant_only |
displays the most dominant part only (the most left part). | 1y 2d -> 1y |
days_instead_of_years |
displays time durations in days rather than converting them into years. | 1y 1d -> 366d |
All options have default value unless specified
Options shorthand
In order to easily create a MillisecondOption
instance, you can use the MillisecondOption::default()
method:
let option = MillisecondOption {
days_instead_of_years: true,
..MillisecondOption::default()
};
License
MIT
Inspiration
This crate is inspired by pretty-ms
npm package.