6

使用Chrono-TZ 库,如何获取指定时区的当前时间?

我试过了

let naive_dt = Local::now().naive_local();
let dt = Los_Angeles.from_local_datetime(&naive_dt).unwrap();
println!("{:#?}", dt);

但这打印了我当前时区的日期时间,并附上了请求的时区标识符,从而给了我一个因时区差异而关闭的日期时间。

例如,在 18:30 AEST (UTC+10),我询问 PST (UTC-8) 中的当前时间。应该是太平洋标准时间 00:30。相反,我得到 18:30 PST

4

2 回答 2

7

根据 UTC 构造值,而不是本地时间。

let utc = UTC::now().naive_utc();
let dt = Los_Angeles.from_utc_datetime(&utc);
于 2016-12-15T08:01:50.817 回答
0

您可以使用chrono::DateTime::with_timezone将 a 转换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
于 2021-07-02T06:24:20.303 回答