qorzen_oxide/utils/
time.rs1use chrono::{DateTime, Duration, Utc};
4
5pub struct Time;
7
8impl Time {
9 pub fn now() -> DateTime<Utc> {
11 #[cfg(not(target_arch = "wasm32"))]
12 {
13 Utc::now()
14 }
15
16 #[cfg(target_arch = "wasm32")]
17 {
18 let millis = js_sys::Date::now() as i64;
19 match DateTime::from_timestamp_millis(millis) {
20 Some(dt) => dt,
21 None => {
22 web_sys::console::error_1(
23 &"Failed to create DateTime from JS timestamp".into(),
24 );
25 DateTime::from_timestamp(1640995200, 0).unwrap()
27 }
28 }
29 }
30 }
31
32 pub fn now_millis() -> u64 {
34 #[cfg(not(target_arch = "wasm32"))]
35 {
36 Utc::now().timestamp_millis() as u64
37 }
38
39 #[cfg(target_arch = "wasm32")]
40 {
41 js_sys::Date::now() as u64
42 }
43 }
44
45 pub fn from_millis(millis: i64) -> DateTime<Utc> {
47 DateTime::from_timestamp_millis(millis).unwrap_or_else(|| {
48 DateTime::from_timestamp(1640995200, 0).unwrap() })
50 }
51
52 pub fn duration_millis(millis: i64) -> Duration {
54 Duration::milliseconds(millis)
55 }
56
57 pub fn duration_secs(secs: i64) -> Duration {
59 Duration::seconds(secs)
60 }
61
62 pub fn duration_hours(hours: i64) -> Duration {
64 Duration::hours(hours)
65 }
66
67 pub fn duration_days(days: i64) -> Duration {
69 Duration::days(days)
70 }
71}