chrono
chrono
có hầu hết mọi thứ giúp bạn xử lý dates và times. chrono_tz
không được ship bên trong chrono
vì lý do binary size nên chúng ta có thể cài đặt riêng nếu cần thiết.
File: Cargo.toml
[dependencies]
chrono = "*"
chrono-tz = "*"
Ví dụ:
#![allow(unused)] fn main() { use chrono::prelude::*; let utc: DateTime<Utc> = Utc::now(); println!("{}", utc); }
Ví dụ:
#![allow(unused)] fn main() { use chrono::prelude::*; let dt: DateTime<Local> = Local::now(); println!("{}", dt); // 2024-06-20 09:05:39.051849711 +00:00 println!("{}", dt.format("%A, %B %e, %Y %r")); // Thursday, June 20, 2024 09:06:36 AM println!("year = {}", dt.year()); // year = 2024 }
Khởi tạo naive datetime và convert thành timezone-aware datetime
#![allow(unused)] fn main() { use chrono::{TimeZone, NaiveDate}; use chrono_tz::Asia::Ho_Chi_Minh; let naive_dt = NaiveDate::from_ymd(2038, 1, 19).and_hms(3, 14, 08); let tz_aware = Ho_Chi_Minh.from_local_datetime(&naive_dt).unwrap(); println!("{}", tz_aware.to_string()); }
Parse datetime
#![allow(unused)] fn main() { use chrono::prelude::*; // method 1 let dt = "2014-11-28T12:00:09Z".parse::<DateTime<Utc>>(); println!("{:?}", dt); }
DateTime::parse_from_str
:
#![allow(unused)] fn main() { use chrono::prelude::*; let dt = DateTime::parse_from_str("2014-11-28 21:00:09 +09:00", "%Y-%m-%d %H:%M:%S %z"); println!("{:?}", dt); }
DateTime::parse_from_rfc2822
, DateTime::parse_from_rfc3339
, etc:
#![allow(unused)] fn main() { use chrono::prelude::*; let dt = DateTime::parse_from_rfc2822("Tue, 1 Jul 2003 10:52:37 +0200"); println!("{:?}", dt); }
Documentation
Xem docs.rs nhiều ví dụ hơn và API reference.