如何将DateTime <utc>转换为DateTime <fixedoffset>,反之亦然?

时间:2015-07-02 14:08:59

标签: rust

我有一个包含时间戳的结构。 为此我使用chrono library。有两种方法可以获得时间戳:

  1. 通过vim从字符串中解析,结果为DateTime::parse_from_str
  2. DateTime<FixedOffset>收到的当前时间,结果为UTC::now
  3. 有没有办法将DateTime<UTC>转换为DateTime<UTC>

1 个答案:

答案 0 :(得分:5)

我相信您正在寻找DateTime::with_timezone

extern crate chrono;

use chrono::{DateTime, Utc, Local, TimeZone};

fn main() {
    let now = Utc::now();
    let then = Local
        .datetime_from_str("Thu Jul  2 23:26:06 EDT 2015", "%a %h %d %H:%M:%S EDT %Y")
        .unwrap();

    println!("{}", now);
    println!("{}", then);

    let then_utc: DateTime<Utc> = then.with_timezone(&Utc);

    println!("{}", then_utc);
}

我在then_utc上添加了一个冗余类型注释,以显示它是UTC格式。此代码打印

2017-08-18 23:04:07.470678901 UTC
2015-07-02 23:26:06 +00:00
2015-07-02 23:26:06 UTC