使用Chrono-TZ library,如何获取指定时区的当前时间?
我试过
let naive_dt = Local::now().naive_local();
let dt = Los_Angeles.from_local_datetime(&naive_dt).unwrap();
println!("{:#?}", dt);
但是这会在我当前的时区打印日期时间,并添加了所请求的时区标识符,从而为我提供了一个日期时间,该日期时间与时区的差异有关。
例如,在澳大利亚东部标准时间18:30(UTC + 10),我要求PST的当前时间(UTC-8)。它应该是太平洋标准时间00:30。相反,我得到太平洋标准时间18:30
答案 0 :(得分:3)
根据UTC构建值,而不是本地时间。
let utc = UTC::now().naive_utc();
let dt = Los_Angeles.from_utc_datetime(&utc);
答案 1 :(得分:0)
您可以使用 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);
}
$ cargo run --bin example
pacific_now = 2021-07-01 23:22:11.052490 PDT