Rust:
Расчет даты в будущем или прошлом
Как:
В Rust есть крейт chrono
для всех ваших потребностей, связанных с датой и временем. Вот как прибавить или вычесть дату:
use chrono::{DateTime, Duration, Utc};
fn main() {
let now = Utc::now();
println!("Текущее UTC время: {}", now);
let two_weeks = Duration::weeks(2);
let future_date = now + two_weeks;
println!("UTC через две недели: {}", future_date);
let thirty_days_ago = Duration::days(-30);
let past_date = now + thirty_days_ago;
println!("UTC 30 дней назад: {}", past_date);
}
Пример вывода:
Текущее UTC время: 2023-04-01T12:00:00Z
UTC через две недели: 2023-04-15T12:00:00Z
UTC 30 дней назад: 2023-03-02T12:00:00Z
Глубокое погружение
Традиционно, манипуляции с датой и временем были проблематичными. Разные системы и языки программирования обрабатывают их по-разному. Стандартная библиотека Rust предоставляет базовые функции, но крейт chrono
является предпочтительным выбором.
Альтернативы? Конечно, вы могли бы вручную рассчитать даты, преобразовав все в метки времени, манипулировав числами и снова преобразовав обратно. Или, вы могли бы использовать специализированные библиотеки для работы с временем в других языках - Python имеет datetime
, JavaScript имеет Date
и т.д.
Крейт chrono
в Rust предоставляет вам типы, осведомленные о часовых поясах, такие как DateTime
, и продолжительности, как показано выше. Он обрабатывает все сложные моменты, такие как високосные годы и переход на летнее время, так что вам не приходится. Он также выполняет разбор и форматирование дат, делая его комплексным решением.
Смотрите также
- Крейт
chrono
: https://crates.io/crates/chrono - Документация по времени в Rust: https://doc.rust-lang.org/std/time/index.html
- Глава о дате и времени в книге “Язык программирования Rust”: https://doc.rust-lang.org/book/ch10-02-traits.html (ищите разделы, связанные с DateTime)