use chrono::TimeZone;
use chrono_tz::Tz;
use chrono_tz::UTC;
fn main() {
let tz: Tz = "Australia/Melbourne".parse().unwrap();
let dt = tz.ymd(2019, 05, 09).and_hms(12, 0, 0);
let utc = UTC.ymd(2019, 05, 09).and_hms(12, 0, 0);
let offset = utc - dt;
println!("offset = UTC{:+02}:{:02}", offset.num_hours(), offset.num_minutes() % 60);
}
offset = UTC+10:00
chrono-tz
支持的时区(源自IANA TZ数据库)并不描述固定的偏移量。相反,该数据库包含一组规则,描述每个时区的夏令时更改时间。因此,您只能通过提供您想要知道偏移量的时间来准确地获取偏移量(在我的示例中是2019年5月9日12:00:00)。
obs-zone
定义。尽管即使在那里,它们也被认为是"过时的",因为它们最初是在早期的RFC 822中定义的,在那个时候对这类冲突的理解还不够清晰。 - Matt Johnson-Pint