1pub mod error;
4
5use time::UtcOffset;
6use tz::TimeZone;
7
8pub fn current_local_offset() -> Result<UtcOffset, error::LocalOffsetError> {
10 let time_zone_local = TimeZone::local()?;
12
13 let current_local_time_type = time_zone_local.find_current_local_time_type()?;
15
16 let diff_secs = current_local_time_type.ut_offset();
17
18 let offset_sec = UtcOffset::from_hms(
19 (diff_secs / 3_600) as _,
20 ((diff_secs / 60) % 60) as _,
21 (diff_secs % 60) as _,
22 )?
23 .whole_seconds();
25
26 UtcOffset::from_whole_seconds(offset_sec).map_err(|e| e.into())
27 }
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn it_works() {
36 let result = current_local_offset();
37 println!("{:?}", result);
38 }
39}