【问题标题】:Getting the current time in specified timezone获取指定时区的当前时间
【发布时间】:2017-04-30 18:01:43
【问题描述】:

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

我试过了

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

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

例如,在美国东部标准时间 (UTC+10) 18:30,我要求以太平洋标准时间 (UTC-8) 表示当前时间。应该是太平洋标准时间 00:30。相反,我得到 18:30 PST

【问题讨论】:

    标签: rust rust-chrono chrono-tz


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-18
        • 2012-03-23
        • 2014-04-21
        • 2017-09-18
        • 2019-12-15
        • 2019-06-14
        • 2012-02-29
        • 1970-01-01
        相关资源
        最近更新 更多