diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-02 18:36:06 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-02 18:36:06 -0600 |
| commit | 8cdfa445d6629ffef4cb84967ff7017654045bc2 (patch) | |
| tree | 22f0b0907c024c78d26a731e2e1f5219407d8102 /vendor/time/src/interop/js_sys_date_offsetdatetime.rs | |
| parent | 4351c74c7c5f97156bc94d3a8549b9940ac80e3f (diff) | |
chore: add vendor directory
Diffstat (limited to 'vendor/time/src/interop/js_sys_date_offsetdatetime.rs')
| -rw-r--r-- | vendor/time/src/interop/js_sys_date_offsetdatetime.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/vendor/time/src/interop/js_sys_date_offsetdatetime.rs b/vendor/time/src/interop/js_sys_date_offsetdatetime.rs new file mode 100644 index 00000000..ecbd601e --- /dev/null +++ b/vendor/time/src/interop/js_sys_date_offsetdatetime.rs @@ -0,0 +1,27 @@ +use num_conv::prelude::*; + +use crate::convert::*; +use crate::OffsetDateTime; + +impl From<js_sys::Date> for OffsetDateTime { + /// # Panics + /// + /// This may panic if the timestamp can not be represented. + fn from(js_date: js_sys::Date) -> Self { + // get_time() returns milliseconds + let timestamp_nanos = js_date.get_time() as i128 + * Nanosecond::per(Millisecond).cast_signed().extend::<i128>(); + Self::from_unix_timestamp_nanos(timestamp_nanos) + .expect("invalid timestamp: Timestamp cannot fit in range") + } +} + +impl From<OffsetDateTime> for js_sys::Date { + fn from(datetime: OffsetDateTime) -> Self { + // new Date() takes milliseconds + let timestamp = (datetime.unix_timestamp_nanos() + / Nanosecond::per(Millisecond).cast_signed().extend::<i128>()) + as f64; + Self::new(×tamp.into()) + } +} |
