Сдвиг даты на несколько дней в Rust
Календарный день можно сдвинуть на целое число суток. У крейта для этого свой тип длительности: его задают числом дней. Это не интервал стандартной библиотеки, где длина паузы задана секундами.
Безопаснее не складывать дату с длительностью знаком плюс напрямую, а вызвать проверенное прибавление: оно вернет новую дату или пустой вариант, если результат вышел за пределы календаря.
Соберем исходный день и прибавим три суток:
use chrono::{Duration, NaiveDate};
fn main() {
if let Some(start) = NaiveDate::from_ymd_opt(2026, 10, 2) {
if let Some(later) = start.checked_add_signed(Duration::days(3)) {
println!("{}", later);
}
}
}
На экране 2026-10-05. Три календарных
дня прошли от второго октября до пятого.
Тот же прием с вычитанием через отрицательную длительность:
use chrono::{Duration, NaiveDate};
fn main() {
if let Some(start) = NaiveDate::from_ymd_opt(2026, 10, 2) {
if let Some(earlier) = start.checked_add_signed(Duration::days(-1)) {
println!("{}", earlier);
}
}
}
Дана дата текстом:
let date = "2026-03-01";
Прибавьте 7 суток и выведите
получившийся день.
Дана дата текстом:
let date = "2024-01-10";
Отнимите 9 суток и выведите
результат.
Скажите, зачем для сдвига даты лучше брать проверенное прибавление, а не обычное сложение знаком плюс.