如何转换chrono`DateTime<;UTC>;`实例到`DateTime<;本地>;`?

如何转换chrono`DateTime<;UTC>;`实例到`DateTime<;本地>;`?,datetime,rust,Datetime,Rust,我的目标是将utc转换为loc: use chrono::{Local, UTC, TimeZone}; let utc = chrono::UTC::now(); let loc = chrono::Local::now(); println!("{:?}", utc); println!("{:?}", loc); println!("{:?}", utc.with_timezone(&Local)); println!("{:?}", Local.from_utc_datet

我的目标是将
utc
转换为
loc

use chrono::{Local, UTC, TimeZone};

let utc = chrono::UTC::now();
let loc = chrono::Local::now();

println!("{:?}", utc);
println!("{:?}", loc);

println!("{:?}", utc.with_timezone(&Local));
println!("{:?}", Local.from_utc_datetime(&utc.naive_local()));
。。。产生了以下输出:

2015-02-26T16:22:27.873593Z
2015-02-26T17:22:27.873663+01:00
2015-02-26T15:22:27.873593+00:00
2015-02-26T15:22:27.873593+00:00
第二行显示的
loc
时间是我在转换
utc
时想要看到的时间

如何正确地将
DateTime
实例转换为
DateTime


我正在使用。在这个方法中,它甚至告诉我应该使用
时区
特性。但是,我遗漏了一些东西。

哦,谢谢你的报道。这是一个bug,已注册为问题。这应该在Chrono 0.2.3中固定


除了这个错误,
utc.with_timezone(&Local)
确实是转换为本地时间的正确方法。有一个重要的标识是
utc。与_时区(&Local)。与_时区(&utc)
应等于
utc
(本地时区已更改的例外情况除外)。

从chrono 0.4.7开始,您可以使用from trait以更简单的方式在两者之间进行转换:

使用chrono::prelude::*;
fn main(){
让utc=utc::now();
让local=local::now();
让转换为:DateTime=DateTime::from(utc);
}

谢谢!您是否可以调整您的答案,说明带时区的
是回答问题的方法?那我很乐意开绿灯。干杯