#human-readable #timestamp #pretty-ms #pretty-date #relative-date-time

no-std millisecond

Format milliseconds into a human-readable and relative timestamp formats. This package has no-std dependency.

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

Download history 80/week @ 2024-10-29 89/week @ 2024-11-05 81/week @ 2024-11-12 89/week @ 2024-11-19 83/week @ 2024-11-26 75/week @ 2024-12-03 102/week @ 2024-12-10 79/week @ 2024-12-17 66/week @ 2024-12-24 61/week @ 2024-12-31 77/week @ 2025-01-07 69/week @ 2025-01-14 63/week @ 2025-01-21 54/week @ 2025-01-28 55/week @ 2025-02-04 353/week @ 2025-02-11

534 downloads per month

MIT license

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.

No runtime deps