如何在 Rust 中找到本地时区偏移量

tek*_*aul 8 rust

Rustchrono::Local包含本地时区信息,但似乎没有任何方法来获取字符串或秒数偏移量的值。

任何想法都是如何获得正确的局部偏移量,以便

DateTime::parse_from_rfc3339([iso8601 date] + [timezone]).unwrap().with_timezone(&Local)
Run Code Online (Sandbox Code Playgroud)

将返回DateTime运行代码的计算机的默认当前时区。

mca*_*ton 5

您可以使用

Local.timestamp(0, 0).offset().fix().local_minus_utc()
Run Code Online (Sandbox Code Playgroud)

它以秒为单位返回 UTC 的本地偏移量(例如,它在我的 CET 系统上返回 3600)。

游乐场的固定链接,它似乎使用 UTC,因此返回 0)


tek*_*aul -3

目前我有一个仅适用于 Linux 的 hacky 解决方案

/// 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())
}
Run Code Online (Sandbox Code Playgroud)