(date: &str, start: WeekDay)
| 295 | } |
| 296 | |
| 297 | pub(crate) fn week_start(date: &str, start: WeekDay) -> Option<String> { |
| 298 | let date = parse_iso_date(date)?; |
| 299 | let start_num = match start { |
| 300 | WeekDay::Sunday => 0, |
| 301 | WeekDay::Monday => 1, |
| 302 | WeekDay::Tuesday => 2, |
| 303 | WeekDay::Wednesday => 3, |
| 304 | WeekDay::Thursday => 4, |
| 305 | WeekDay::Friday => 5, |
| 306 | WeekDay::Saturday => 6, |
| 307 | }; |
| 308 | let day = date.weekday_from_sunday() as i64; |
| 309 | let shift = (day - start_num + 7) % 7; |
| 310 | Some(format_naive_date(date.checked_add_days(-shift)?)) |
| 311 | } |
| 312 | |
| 313 | #[cfg(test)] |
| 314 | mod tests { |
no test coverage detected