Skip to content

Human-readable time parser and formatter for Rust

License

Apache-2.0, MIT licenses found

Licenses found

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

LennyLizowzskiy/zuck

zuck

MSRV License Crate

Convert human-readable time to std::time::Duration and vice versa. No dependencies needed (except std).

Stability

This library adheres to Semantic Versioning.

Usage

Parse the &str using [0-9][alias] format. Whitespaces between the value are allowed between elements. Repeating time units is not.

Aliases

  • Nanoseconds: ns, nsec, nsecs, nanosec, nanosecs, nanosecond, nanoseconds
  • Microseconds: μs, us, usec, usecs, microsec, microsecs, microsecond, microseconds
  • Milliseconds: ms, msec, msecs, millisecond, milliseconds
  • Seconds: s, sec, secs, second, seconds
  • Minutes: m, min, mins, minute, minutes
  • Hours: h, hr, hrs, hour, hours
  • Days: d, day, days
  • Weeks: w, wk, wks, week, weeks
  • Months: mo, month, months
  • Years: y, yr, yrs, year, years

Example

let duration = zuck::Duration::from_str("1yr2mo3w4d5h6m7s8ms9microsec10ns").unwrap();

assert_eq!(
    duration,
    Duration {
        nanoseconds: 10,
        microseconds: 9,
        milliseconds: 8,
        seconds: 7,
        minutes: 6,
        hours: 5,
        days: 25,
        months: 2,
        years: 1
    }
);

Miscellaneous

RegExp to use for string validation in other tools (ex: JSONSchema)

\b(\d{1,32} ?((ns)|(nsecs?)|(nanosecs?)|(nanosecs?)|(nanoseconds?)|(μs)|(us)|(usecs?)|(microsecs?)|(microseconds?)|(ms)|(msecs?)|(milliseconds?)|(s)|(secs?)|(second)|(seconds?)|(m)|(mins?)|(minutes?)|(h)|(hrs?)|(hours?)|(d)|(days?)|(w)|(wks?)|(weeks?)|(mo)|(months?)|(y)|(yrs?)|(years?)))( ?(\d{1,32} ?((ns)|(nsecs?)|(nanosecs?)|(nanosecs?)|(nanoseconds?)|(μs)|(us)|(usecs?)|(microsecs?)|(microseconds?)|(ms)|(msecs?)|(milliseconds?)|(s)|(secs?)|(second)|(seconds?)|(m)|(mins?)|(minutes?)|(h)|(hrs?)|(hours?)|(d)|(days?)|(w)|(wks?)|(weeks?)|(mo)|(months?)|(y)|(yrs?)|(years?))))*\b

Though it doesn't cover the failure in case if repeating of the same time unit occurs.

License

This library is primarily distributed under the terms of either the MIT license or the Apache License (Version 2.0) at your option.

See LICENSE-APACHE and LICENSE-MIT for details.

About

Human-readable time parser and formatter for Rust

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Stars

Watchers

Forks

Languages