如何将 chrono `DateTime<UTC>` 实例转换为 `DateTime<Local>`?
How do I convert a chrono `DateTime<UTC>` instance to `DateTime<Local>`?
我的目标是将 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<UTC>
实例转换为 DateTime<Local>
?
元
我正在使用 chrono 0.2.2. In the DateTime.from_utc
方法,它甚至告诉我应该使用 TimeZone
特征。但是,我遗漏了一些东西。
糟糕,感谢您的报告。这是一个错误并已注册为问题 #26。这应该在 Chrono 0.2.3 中修复。
除了bug,utc.with_timezone(&Local)
确实是一个正确的转换为本地时间的方法。有一个重要的标识,utc.with_timezone(&Local).with_timezone(&UTC)
应该等于utc
(例外情况除外,本地时区已更改)。
从 chrono 0.4.7 开始,您可以使用 from trait 以更简单的方式在它们之间进行转换:
use chrono::prelude::*;
fn main() {
let utc = Utc::now();
let local = Local::now();
let converted: DateTime<Local> = DateTime::from(utc);
}
我的目标是将 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<UTC>
实例转换为 DateTime<Local>
?
元
我正在使用 chrono 0.2.2. In the DateTime.from_utc
方法,它甚至告诉我应该使用 TimeZone
特征。但是,我遗漏了一些东西。
糟糕,感谢您的报告。这是一个错误并已注册为问题 #26。这应该在 Chrono 0.2.3 中修复。
除了bug,utc.with_timezone(&Local)
确实是一个正确的转换为本地时间的方法。有一个重要的标识,utc.with_timezone(&Local).with_timezone(&UTC)
应该等于utc
(例外情况除外,本地时区已更改)。
从 chrono 0.4.7 开始,您可以使用 from trait 以更简单的方式在它们之间进行转换:
use chrono::prelude::*;
fn main() {
let utc = Utc::now();
let local = Local::now();
let converted: DateTime<Local> = DateTime::from(utc);
}