use chrono::{DateTime, FixedOffset, Utc};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Precision {
Seconds,
Millis,
}
const JAKARTA_OFFSET_SECONDS: i32 = 7 * 3600;
fn jakarta() -> FixedOffset {
FixedOffset::east_opt(JAKARTA_OFFSET_SECONDS).expect("WIB offset is well-known constant")
}
pub fn now_jakarta_ms() -> String {
format_jakarta(Utc::now().with_timezone(&jakarta()), Precision::Millis)
}
pub fn now_jakarta_seconds() -> String {
format_jakarta(Utc::now().with_timezone(&jakarta()), Precision::Seconds)
}
pub fn format_jakarta(dt: DateTime<FixedOffset>, precision: Precision) -> String {
match precision {
Precision::Seconds => dt.format("%Y-%m-%dT%H:%M:%S%:z").to_string(),
Precision::Millis => dt.format("%Y-%m-%dT%H:%M:%S%.3f%:z").to_string(),
}
}