Как преобразовать хронологический экземпляр `DateTime <Local>` в `DateTime <Utc>`? - PullRequest
3 голосов
/ 04 июля 2019

Существует вопрос , который был задан ранее для преобразования другим способом (Utc -> Local)


Я пытаюсь преобразовать Local datetime в Utc time:

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

let utc = chrono::UTC::now(); // 2019-07-04 15:13:19.014970700 
let local = chrono::Local::now(); // 2019-07-04 17:13:19.014970700 +03:00

В настоящее время я ожидаю некоторого API, например local.to_utc().Может быть, я могу реализовать черту TryFrom для такого преобразования.

Как я могу преобразовать Local datetime в Utc datetime?

1 Ответ

4 голосов
/ 04 июля 2019

Chrono предоставляет черту TimeZone, которая имеет метод from_local_datetime.

use chrono::prelude::*;

fn main() {
    let local = Local::now();
    let utc = Utc
        .from_local_datetime(&local.naive_local())
        .single()
        .unwrap();

    dbg!(local.naive_local());
    dbg!(utc);
}

На моей локальной машине это дает мне:

[src/main.rs:10] local.naive_local() = 2019-07-04T14:25:15.093909965
[src/main.rs:11] utc = 2019-07-04T12:25:15.093909965Z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...