2017-03-03 34 views
7

Tôi đang sử dụng chrono crate; sau khi đào một số tôi phát hiện ra các loại DateTime có một chức năng timestamp() mà có thể tạo ra thời gian kỷ nguyên của loại i64. Tuy nhiên, tôi không thể tìm ra cách chuyển đổi nó trở về DateTime.Làm thế nào để chuyển đổi thời gian epoch thành ngày và giờ chuẩn?

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

Trả lời

3

Trước tiên, bạn cần phải tạo ra một NaiveDateTime và sau đó sử dụng nó để tạo ra một DateTime một lần nữa:

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

Tôi cố gắng tìm một cách sử dụng tương tự như trong [thisplace] (https://docs.rs/ chrono/*/src/chrono/datetime.rs.html # 42), nhưng dường như câu trả lời của bạn ngắn gọn và thân thiện hơn. cảm ơn bạn! – Sajuuk

Các vấn đề liên quan