Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpCrTz 155 of 288 menu
◀ ▶

Момент в UTC и со сдвигом в Rust

Календарная дата без часов описывает только день. Момент на шкале времени хранят с часовым поясом: в крейте для этого есть тип даты-времени и метка UTC.

Текущий момент в UTC можно прочитать одной статической командой. Ее результат уже несет информацию о поясе нулевого сдвига.

Выведем такой момент и переведем его в пояс с фиксированным сдвигом на три часа восточнее UTC:

use chrono::{FixedOffset, Utc}; fn main() { let now = Utc::now(); println!("{}", now); if let Some(offset) = FixedOffset::east_opt(3 * 3600) { let shifted = now.with_timezone(&offset); println!("{}", shifted); } }

Первая строка показывает время с суффиксом Z, вторая добавляет смещение +03:00. Это один и тот же момент, только подписанный по-разному.

Тот же сдвиг можно задать для наивной даты-времени без пояса через фиксированное смещение:

use chrono::{FixedOffset, NaiveDate, offset::MappedLocalTime}; fn main() { if let Some(naive) = NaiveDate::from_ymd_opt(2026, 10, 2).and_then(|d| d.and_hms_opt(15, 30, 0)) { if let Some(offset) = FixedOffset::east_opt(3 * 3600) { match offset.from_local_datetime(&naive) { MappedLocalTime::Single(dt) => println!("{}", dt), _ => {} } } } }

Скажите, чем момент в UTC отличается от наивной даты без пояса.

Запишите сдвиг +03:00 через фиксированное смещение в секундах и выведите текущий момент в этом поясе.

Дана наивная дата-время 2026-10-02 12:00:00. Привяжите ее к UTC через and_utc и выведите результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить