commit bc1d171cadf801763bd6798dfbd8d5ad971c8b57 Author: Michael Pfaff Date: Sun Feb 27 23:25:12 2022 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96ef6c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8424e37 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "wasm-time" +version = "0.1.0" +edition = "2021" + +[dependencies] +time = "0.3" + +[target.'cfg(target_arch = "wasm32")'.dependencies] +wasm-bindgen = "0.2" + diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..9dd2b4d --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,18 @@ +use time::OffsetDateTime; + +#[cfg(target_arch = "wasm32")] +#[wasm_bindgen::prelude::wasm_bindgen(inline_js = r#" +export function unix_millis_now() { + return Date.now(); +}"#)] +extern "C" { + fn unix_millis_now() -> f64; +} + +pub fn now_utc() -> OffsetDateTime { + #[cfg(target_arch = "wasm32")] + return OffsetDateTime::from_unix_timestamp_nanos((unix_millis_now() * 1_000_000f64) as i128).expect("time outside supported range"); + #[cfg(not(target_arch = "wasm32"))] + return OffsetDateTime::now_utc(); +} +