use ::jiff::tz::{Offset, TimeZone};
use super::common::Sealed;
use super::DateBackend;
#[derive(Debug, Clone, Copy)]
pub struct Jiff;
impl Sealed for Jiff {}
impl DateBackend for Jiff {
type Date = ::jiff::civil::Date;
type DateTime = ::jiff::Timestamp;
type Time = ::jiff::civil::Time;
fn parse_date(s: &str) -> Option<Self::Date> {
s.parse().ok()
}
fn parse_time(s: &str) -> Option<Self::Time> {
s.parse().ok()
}
fn naive_to_utc(naive: &str, offset_seconds: i32) -> Option<Self::DateTime> {
let civil: ::jiff::civil::DateTime = naive.parse().ok()?;
Offset::from_seconds(offset_seconds)
.ok()?
.to_timestamp(civil)
.ok()
}
fn today() -> Self::Date {
::jiff::Timestamp::now().to_zoned(TimeZone::UTC).date()
}
fn now() -> Self::DateTime {
::jiff::Timestamp::now()
}
fn format_datetime(dt: &Self::DateTime) -> String {
dt.to_string()
}
}
pub type ZDate = super::ZDate<Jiff>;
pub type ZDateTime = super::ZDateTime<Jiff>;
pub fn date() -> ZDate {
ZDate::new()
}
pub fn datetime() -> ZDateTime {
ZDateTime::new()
}
pub type ZTime = super::ZTime<Jiff>;
pub fn time() -> ZTime {
ZTime::new()
}