如何将自纪元以来的Unix时间/时间转换为标准日期和时间?

Saj*_*uuk 9 time rust rust-chrono

我正在使用计时箱; 经过一些挖掘后,我发现该DateTime类型具有timestamp()可以生成类型的纪元时间的函数i64.但是,我无法找到如何将其转换回来DateTime.

extern crate chrono;
use chrono::*;

fn main() {
    let date = chrono::UTC.ymd(2020, 1, 1).and_hms(0, 0, 0);
    println!("{}", start_date.timestamp());
    // ...how to convert it back?
}
Run Code Online (Sandbox Code Playgroud)

lje*_*drz 6

您首先需要创建一个NaiveDateTime然后再使用它来创建一个DateTime:

extern crate chrono;
use chrono::prelude::*;

fn main() {
    let datetime = Utc.ymd(2020, 1, 1).and_hms(0, 0, 0);
    let timestamp = datetime.timestamp();
    let naive_datetime = NaiveDateTime::from_timestamp(timestamp, 0);
    let datetime_again: DateTime<Utc> = DateTime::from_utc(naive_datetime, Utc);

    println!("{}", datetime_again);
}
Run Code Online (Sandbox Code Playgroud)

操场

  • 我设法在[thisplace](https://docs.rs/chrono/*/src/chrono/datetime.rs.html#42)中找到了类似的用法,但显然你的答案更简洁和友好.谢谢! (2认同)