orbital-base-components 0.1.1

Headless base primitives for Orbital — structure, semantics, and accessibility
Documentation
mod convert;
mod day_bounds;
mod error;
mod format;
mod orbital_datetime;
mod picker_shortcut;
mod timezone;
mod unix_time;

pub use convert::{
    ToDataValue, ToIso8601, ToUnixSeconds, TryFromDataValue, TryFromIso8601, TryFromUnixSeconds,
};
pub use day_bounds::{is_datetime_out_of_range, is_day_disabled};
pub use error::DatetimeError;
pub use format::{format_datetime, format_unix, parse_datetime, parse_to_unix, DatetimeFormat};
pub use orbital_datetime::OrbitalDateTime;
pub use picker_shortcut::PickerShortcut;
pub use timezone::DatetimeTimezone;
#[allow(deprecated)]
pub use unix_time::UnixTime;

#[cfg(test)]
mod format_tests {
    use super::{
        format_datetime, parse_datetime, DatetimeFormat, DatetimeTimezone, OrbitalDateTime,
        TryFromUnixSeconds,
    };

    #[test]
    fn format_parse_datetime_iso_round_trip() {
        let dt = OrbitalDateTime::try_from_unix_seconds(1_735_689_600, DatetimeTimezone::Utc)
            .expect("valid");
        let formatted = format_datetime(dt, DatetimeFormat::IsoDate);
        let parsed = parse_datetime(&formatted, DatetimeFormat::IsoDate, DatetimeTimezone::Utc)
            .expect("parsed");
        assert!(dt.same_calendar_day(parsed));
    }

    #[test]
    fn format_parse_datetime_us_round_trip() {
        let dt = OrbitalDateTime::try_from_unix_seconds(1_735_689_600, DatetimeTimezone::Utc)
            .expect("valid");
        let formatted = format_datetime(dt, DatetimeFormat::UsDate);
        let parsed = parse_datetime(&formatted, DatetimeFormat::UsDate, DatetimeTimezone::Utc)
            .expect("parsed");
        assert!(dt.same_calendar_day(parsed));
    }
}