diff --git a/src/lib.rs b/src/lib.rs index b634d00..6ce32da 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,7 +27,11 @@ pub struct Instant(InnerInstant); impl Instant { #[cfg(target_arch = "wasm32")] pub fn now() -> Instant { - let stamp = web_sys::window().expect("cannot get window").performance().expect("cannot get performance").now(); + let stamp = web_sys::window() + .expect("cannot get window") + .performance() + .expect("cannot get performance") + .now(); return Instant(Duration::seconds_f64(stamp / 1_000f64)); } @@ -55,9 +59,11 @@ impl std::ops::Sub for Instant { #[cfg(feature = "local-offset")] #[cfg(target_arch = "wasm32")] pub fn current_local_offset() -> Result { - // get_timezone_offset is in minutes - time::UtcOffset::from_whole_seconds((js_sys::Date::new_0().get_timezone_offset() * 60f64) as i32) - .map_err(|_| time::error::IndeterminateOffset) + // The value returned by `getTimezoneOffset()` is inverted. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset#negative_values_and_positive_values. + time::UtcOffset::from_whole_seconds( + (-js_sys::Date::new_0().get_timezone_offset() * 60f64) as i32, + ) + .map_err(|_| time::error::IndeterminateOffset) } #[cfg(feature = "local-offset")]