Convert human-readable time to std::time::Duration
and vice versa. No dependencies needed (except std
).
This library adheres to Semantic Versioning.
Parse the &str
using [0-9][alias]
format. Whitespaces between the value are allowed between elements. Repeating time units is not.
- 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
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
}
);
\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.
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.