Как вы находите местное смещение часового пояса в ржавчине - PullRequest
1 голос
/ 05 января 2020

Rust chrono::Local содержит информацию о местном часовом поясе, но, похоже, не имеет никаких методов для получения значения в виде строки или смещения количества секунд.

Любая идея, как получить правильное локальное смещение, чтобы что

DateTime::parse_from_rfc3339([iso8601 date] + [timezone]).unwrap().with_timezone(&Local)

вернет DateTime, который находится в текущем часовом поясе по умолчанию на компьютере, на котором выполняется код.

Ответы [ 2 ]

0 голосов
/ 05 января 2020

Вы можете использовать

Local.timestamp(0, 0).offset().fix().local_minus_utc()

, который возвращает локальное смещение в UT C в секундах (например, он возвращает 3600 в моей системе CET).

( Постоянная ссылка на игровую площадку , которая, кажется, использует UT C и, следовательно, возвращает 0)

0 голосов
/ 05 января 2020

На данный момент у меня есть хакерское решение, которое работает только на Linux

/// returns local timezone "+01:00"
fn tz() -> String {
    let output = Command::new("date").arg("+%:z").output()
                 .expect("failed to fetch timezone");
    String::from(String::from_utf8_lossy(&output.stdout).trim())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...