Syn*_*sso 6 rust rust-chrono chrono-tz
使用Chrono-TZ 库,如何获取指定时区的当前时间?
我试过
let naive_dt = Local::now().naive_local();
let dt = Los_Angeles.from_local_datetime(&naive_dt).unwrap();
println!("{:#?}", dt);
Run Code Online (Sandbox Code Playgroud)
但这会在我当前的时区打印日期时间,并附上请求的时区标识符,从而为我提供一个因时区差异而关闭的日期时间。
例如,在美国东部标准时间 18:30 (UTC+10),我询问 PST (UTC-8) 中的当前时间。应该是太平洋标准时间 00:30。相反,我得到 18:30 PST
根据 UTC 而不是本地时间构造值。
let utc = UTC::now().naive_utc();
let dt = Los_Angeles.from_utc_datetime(&utc);
Run Code Online (Sandbox Code Playgroud)
您可以使用chrono::DateTime::with_timezone将时区转换DateTime<Utc>为另一个时区。
例子:
#![forbid(unsafe_code)]
use chrono::{DateTime, Utc};
use chrono_tz::Tz;
use chrono_tz::US::Pacific;
fn main() {
let pacific_now: DateTime<Tz> = Utc::now().with_timezone(&Pacific);
println!("pacific_now = {}", pacific_now);
}
Run Code Online (Sandbox Code Playgroud)
$ cargo run --bin example
pacific_now = 2021-07-01 23:22:11.052490 PDT
Run Code Online (Sandbox Code Playgroud)