Привет, дружище, Ржавообразный! Сегодня мы собираемся погрузиться в мир манипулирования датами с помощью фантастической библиотеки Chrono в Rust. Если вы когда-нибудь задавались вопросом, как узнать вчерашнюю дату в Rust, вы попали по адресу. Итак, возьмите свой любимый напиток, запустите компилятор Rust и приступим!
Метод 1: вычитание продолжительности
Один из способов получить вчерашнюю дату — вычесть продолжительность одного дня из текущей даты. Вот как это можно сделать:
use chrono::{Local, Duration};
fn get_yesterday() -> chrono::Date<Local> {
let today = Local::today();
let one_day = Duration::days(1);
today - one_day
}
fn main() {
let yesterday = get_yesterday();
println!("Yesterday's date: {}", yesterday);
}
В этом примере мы используем функцию Local::today()из Chrono, чтобы получить текущую дату. Затем мы создаем объект Duration, представляющий один день, и вычитаем его из текущей даты, получая вчерашнюю дату.
Метод 2: использование NaiveDateTime
Другой подход предполагает использование структуры NaiveDateTime, предоставленной Chrono. Вот пример:
use chrono::{Local, Duration, NaiveDateTime};
fn get_yesterday() -> chrono::NaiveDate {
let today = Local::today().naive_local();
let one_day = Duration::days(1);
let yesterday = today - one_day;
NaiveDateTime::from_timestamp(yesterday.timestamp(), 0).date()
}
fn main() {
let yesterday = get_yesterday();
println!("Yesterday's date: {}", yesterday);
}
В этом методе мы конвертируем текущую дату (Local::today().naive_local()) в объект NaiveDateTime. Затем мы вычитаем из него один день и преобразуем его обратно в объект NaiveDate, используя NaiveDateTime::from_timestamp().
Метод 3: использование UTC
Если вы предпочитаете работать с датами в формате UTC, вместо этого вы можете использовать функцию Utc::today(). Вот пример:
use chrono::{Utc, Duration};
fn get_yesterday() -> chrono::Date<Utc> {
let today = Utc::today();
let one_day = Duration::days(1);
today - one_day
}
fn main() {
let yesterday = get_yesterday();
println!("Yesterday's date (UTC): {}", yesterday);
}
Этот метод очень похож на метод 1, но для получения текущей даты в формате UTC мы используем Utc::today()вместо Local::today().