use jiff::Timestamp;
use jiff::civil::Date as JiffDate;
use time::{Date as TimeDate, Month, OffsetDateTime};
pub fn ts_to_offset(ts: Timestamp) -> OffsetDateTime {
OffsetDateTime::from_unix_timestamp_nanos(ts.as_nanosecond())
.expect("jiff Timestamp within time::OffsetDateTime range")
}
pub fn offset_to_ts(odt: OffsetDateTime) -> Timestamp {
Timestamp::from_nanosecond(odt.unix_timestamp_nanos())
.expect("time::OffsetDateTime within jiff Timestamp range")
}
pub fn date_to_time(d: JiffDate) -> TimeDate {
let month = Month::try_from(d.month() as u8).expect("valid month");
TimeDate::from_calendar_date(d.year() as i32, month, d.day() as u8).expect("valid date")
}
pub fn time_to_date(d: TimeDate) -> JiffDate {
JiffDate::new(d.year() as i16, u8::from(d.month()) as i8, d.day() as i8).expect("valid date")
}