2 stable releases
new 2.0.0 | Nov 18, 2024 |
---|---|
1.0.0 | Nov 16, 2024 |
#96 in Date and time
230 downloads per month
41KB
913 lines
zuck
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
With case-insensitive flag enabled.
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.