获取指定时区的当前时间

时间:2016-12-15 07:51:20

标签: rust rust-chrono chrono-tz

使用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

2 个答案:

答案 0 :(得分:3)

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

let utc = UTC::now().naive_utc();
let dt = Los_Angeles.from_utc_datetime(&utc);

答案 1 :(得分:0)

您可以使用 chrono::DateTime::with_timezoneDateTime<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