2017-03-03 37 views
7

Używam chrono skrzynki; po pewnym wykopaniu odkryłem, że typ DateTime ma funkcję timestamp(), która może generować czas epoki typu i64. Nie mogłem jednak dowiedzieć się, jak przekonwertować go z powrotem na DateTime.Jak przekonwertować czas epoki na standardową datę i godzinę?

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? 
} 

Odpowiedz

3

Najpierw należy stworzyć NaiveDateTime a następnie użyć go do tworzenia DateTime znowu:

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); 
} 
+1

udało mi się znaleźć podobne zastosowanie w [thisplace] (https://docs.rs/ chrono/*/src/chrono/datetime.rs.html # 42), ale widocznie twoja odpowiedź jest bardziej zwięzła i przyjazna. Dziękuję Ci! – Sajuuk