Skip to content

A library for formatting time-related values in a human-friendly way.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-Apache-2.0
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

lubomirkurcak/folktime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

folktime

Build status Crates.io

Tiny library for approximate formatting of std::time::Duration in a human-friendly way.

If you are looking for a full precision human readable format, take a look at humantime.

Usage

use std::time::Duration;
use folktime::Folktime;

let a = Folktime::duration(Duration::from_secs(5));
assert_eq!(format!("{}", a), "5.00s");

Precision

Formatting only shows the most significant digits:

use std::time::Duration;
use folktime::Folktime;

let a = Folktime::duration(Duration::new(0, 123_456_789));
let b = Folktime::duration(Duration::new(1, 123_456_789));
let c = Folktime::duration(Duration::new(12, 123_456_789));
let d = Folktime::duration(Duration::new(123, 123_456_789));

assert_eq!(format!("{}", a), "123ms");
assert_eq!(format!("{}", b), "1.12s");
assert_eq!(format!("{}", c), "12.1s");
assert_eq!(format!("{}", d), "2.05m");

Formatting styles

There are several styles for formatting:

use std::time::Duration;
use folktime::Folktime;
use folktime::duration::Style;

let a = Folktime::duration(Duration::new(0, 12_056_999));
let b = Folktime::duration(Duration::new(0, 12_056_999)).with_style(Style::OneUnitWhole);
let c = Folktime::duration(Duration::new(0, 12_056_999)).with_style(Style::TwoUnitsWhole);

assert_eq!(format!("{}", a), "12.0ms");
assert_eq!(format!("{}", b), "12ms");
assert_eq!(format!("{}", c), "12ms 56us");

Here's a comparison of styles:

Duration Style::OneUnitFrac Style::OneUnitWhole Style::TwoUnitsWhole
0s 0.00s 0s 0s 0ms
0.123456s 123ms 123ms 123ms 456us
1.123456s 1.12s 1s 1s 123ms
12.12345s 12.1s 12s 12s 123ms
123.1234s 2.05m 2m 2m 3s
86400s 1.00d 1d 1d 0h
12345678s 2.04w 2w 2w 0d
123456789s 4.69mo 4mo 4mo 21d
max 584Gy 584Gy 584Gy 4mo

About

A library for formatting time-related values in a human-friendly way.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-Apache-2.0
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages