Skip to content

Commit 170b904

Browse files
ryo1katodjc
authored andcommitted
Add 'wk', 'wks' for weeks and 'yr', 'yrs' for years
1 parent 4f1c17c commit 170b904

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/duration.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ impl Parser<'_> {
126126
"minutes" | "minute" | "min" | "mins" | "m" => (n.mul(60)?, 0),
127127
"hours" | "hour" | "hr" | "hrs" | "h" => (n.mul(3600)?, 0),
128128
"days" | "day" | "d" => (n.mul(86400)?, 0),
129-
"weeks" | "week" | "w" => (n.mul(86400 * 7)?, 0),
129+
"weeks" | "week" | "wk" | "wks" | "w" => (n.mul(86400 * 7)?, 0),
130130
"months" | "month" | "M" => (n.mul(2_630_016)?, 0), // 30.44d
131-
"years" | "year" | "y" => (n.mul(31_557_600)?, 0), // 365.25d
131+
"years" | "year" | "yr" | "yrs" | "y" => (n.mul(31_557_600)?, 0), // 365.25d
132132
_ => {
133133
return Err(Error::UnknownUnit {
134134
start,
@@ -206,11 +206,11 @@ impl Parser<'_> {
206206
/// * `msec`, `ms` -- milliseconds
207207
/// * `seconds`, `second`, `sec`, `s`
208208
/// * `minutes`, `minute`, `min`, `m`
209-
/// * `hours`, `hour`, `hr`, `h`
209+
/// * `hours`, `hour`, `hr`, `hrs`, `h`
210210
/// * `days`, `day`, `d`
211-
/// * `weeks`, `week`, `w`
211+
/// * `weeks`, `week`, `wk`, `wks`, `w`
212212
/// * `months`, `month`, `M` -- defined as 30.44 days
213-
/// * `years`, `year`, `y` -- defined as 365.25 days
213+
/// * `years`, `year`, `yr`, `yrs`, `y` -- defined as 365.25 days
214214
///
215215
/// # Examples
216216
///
@@ -360,6 +360,8 @@ mod test {
360360
assert_eq!(parse_duration("365d"), Ok(Duration::new(31_536_000, 0)));
361361
assert_eq!(parse_duration("1week"), Ok(Duration::new(604_800, 0)));
362362
assert_eq!(parse_duration("7weeks"), Ok(Duration::new(4_233_600, 0)));
363+
assert_eq!(parse_duration("104wks"), Ok(Duration::new(2*31_449_600, 0)));
364+
assert_eq!(parse_duration("100wk"), Ok(Duration::new(60_480_000, 0)));
363365
assert_eq!(parse_duration("52w"), Ok(Duration::new(31_449_600, 0)));
364366
assert_eq!(parse_duration("1month"), Ok(Duration::new(2_630_016, 0)));
365367
assert_eq!(
@@ -372,6 +374,14 @@ mod test {
372374
parse_duration("7years"),
373375
Ok(Duration::new(7 * 31_557_600, 0))
374376
);
377+
assert_eq!(
378+
parse_duration("15yrs"),
379+
Ok(Duration::new(15*31_557_600, 0))
380+
);
381+
assert_eq!(
382+
parse_duration("10yr"),
383+
Ok(Duration::new(10*31_557_600, 0))
384+
);
375385
assert_eq!(parse_duration("17y"), Ok(Duration::new(536_479_200, 0)));
376386
}
377387

0 commit comments

Comments
 (0)