Задачи на дату/время в Rust. Часть 5
Дан вектор строк:
let dates = vec!["2024-01-15", "15.02.2024", "2024/04/10"];
Распарсьте разными форматами в NaiveDate и отсортируйте.
Даны рабочие интервалы:
let periods = vec![((9, 0), (18, 0)), ((10, 30), (19, 30)), ((8, 45), (17, 15))];
Рассчитайте продолжительность каждого интервала в часах и минутах.
Дана HashMap:
let birthdays: HashMap<&str, NaiveDate> = HashMap::from([
("Alice", NaiveDate::from_ymd_opt(1990, 3, 15).unwrap()),
("Bob", NaiveDate::from_ymd_opt(1985, 7, 22).unwrap()),
]);
Найдите, у кого день рождения в текущем месяце.
Дан вектор транзакций:
let tx = vec![("2024-01-15T09:30:00", 1000), ("2024-01-15T14:45:00", 2500)];
Сгруппируйте по дням и посчитайте сумму за каждый день.
Даны периоды отпусков:
let vacations = vec![
(NaiveDate::from_ymd_opt(2024, 6, 1).unwrap(), NaiveDate::from_ymd_opt(2024, 6, 14).unwrap()),
(NaiveDate::from_ymd_opt(2024, 7, 15).unwrap(), NaiveDate::from_ymd_opt(2024, 7, 29).unwrap()),
];
Проверьте, есть ли пересечения периодов.
Дан график магазина:
let schedule: HashMap<u32, ((u32,u32),(u32,u32))> = HashMap::from([
(1, ((9,0), (21,0))), // понедельник
(6, ((10,0), (20,0))), // суббота
]);
Рассчитайте общее рабочее время за неделю (ключ — номер дня).
Дан вектор событий:
let events = vec![
NaiveDate::from_ymd_opt(2024, 5, 10).unwrap().and_hms_opt(14, 0, 0).unwrap(),
NaiveDate::from_ymd_opt(2024, 5, 10).unwrap().and_hms_opt(18, 30, 0).unwrap(),
];
Найдите минимальный интервал между событиями.
Даны измерения:
let m: HashMap<NaiveDate, f64> = HashMap::from([
(NaiveDate::from_ymd_opt(2024, 1, 1).unwrap(), 25.3),
(NaiveDate::from_ymd_opt(2024, 1, 2).unwrap(), 26.1),
]);
Рассчитайте среднюю температуру и день с максимумом.
Даны праздники:
let holidays = vec![
NaiveDate::from_ymd_opt(2024, 1, 1).unwrap(),
NaiveDate::from_ymd_opt(2024, 1, 7).unwrap(),
];
Для заданного месяца посчитайте рабочие дни (пн–пт без праздников).
Даны часовые пояса:
let zones = vec!["+03:00", "+00:00", "-05:00"];
Для текущего момента выведите время в каждой зоне через FixedOffset.