1use crate::{time::Sign, OffsetInSeconds, SecondsSinceUnixEpoch, Time};
2
3impl Time {
5 pub fn new(seconds: SecondsSinceUnixEpoch, offset: OffsetInSeconds) -> Self {
7 Time {
8 seconds,
9 offset,
10 sign: offset.into(),
11 }
12 }
13
14 pub fn now_utc() -> Self {
16 let seconds = jiff::Timestamp::now().as_second();
17 Self {
18 seconds,
19 offset: 0,
20 sign: Sign::Plus,
21 }
22 }
23
24 pub fn now_local() -> Option<Self> {
26 Some(Self::now_local_or_utc())
27 }
28
29 pub fn now_local_or_utc() -> Self {
31 let zdt = jiff::Zoned::now();
32 let seconds = zdt.timestamp().as_second();
33 let offset = zdt.offset().seconds();
34 Self {
35 seconds,
36 offset,
37 sign: offset.into(),
38 }
39 }
40}