use crate::{time::Sign, OffsetInSeconds, SecondsSinceUnixEpoch, Time};
impl Time {
pub fn new(seconds: SecondsSinceUnixEpoch, offset: OffsetInSeconds) -> Self {
Time {
seconds,
offset,
sign: offset.into(),
}
}
pub fn now_utc() -> Self {
let seconds = jiff::Timestamp::now().as_second();
Self {
seconds,
offset: 0,
sign: Sign::Plus,
}
}
pub fn now_local() -> Option<Self> {
Some(Self::now_local_or_utc())
}
pub fn now_local_or_utc() -> Self {
let zdt = jiff::Zoned::now();
let seconds = zdt.timestamp().as_second();
let offset = zdt.offset().seconds();
Self {
seconds,
offset,
sign: offset.into(),
}
}
}