About

Date/time library

See also the [dtg] crate.

Examples

``` use chrono::{TimeZone, Utc}; use dtg_lib::{tz, Dtg, Format};

let epoch = 1658448142; let nanoseconds = 936196858; let rfc3339 = "2022-07-22T00:02:22Z"; let defaultutc = "Fri 22 Jul 2022 00:02:22 UTC"; let defaultmt = "Thu 21 Jul 2022 18:02:22 MDT"; let x = "Xg6L02M"; let autc = format!("{epoch}.000000000\n{rfc3339}\n{defaultutc}\n{defaultutc}"); let amt = format!("{epoch}.000000000\n{rfc3339}\n{defaultutc}\n{defaultmt}"); let dayofweekutc = "Friday"; let dayofweekmt = "Thursday"; let tzutc = tz("UTC").ok(); let tzmt = tz("MST7MDT").ok(); let defaultfmt = Some(Format::default()); let dayofweek_fmt = Some(Format::custom("%A"));

// Create Dtg

let dtg1str = format!("{}", epoch);

let dtg1ts = Dtg::from(&dtg1str).unwrap(); let dtg1dt = Dtg::fromdt(&Utc.timestamp(epoch, 0)); let dtg1x = Dtg::fromx(x).unwrap();

asserteq!(dtg1ts, dtg1dt); asserteq!(dtg1dt, dtg1x); asserteq!(dtg1x, dtg1_ts);

// Create Dtg with nanoseconds

let dtg2str = format!("{}.{}", epoch, nanoseconds);

let dtg2ts = Dtg::from(&dtg2str).unwrap(); let dtg2dt = Dtg::from_dt(&Utc.timestamp(epoch, nanoseconds));

asserteq!(dtg2ts, dtg2_dt);

// Default format

asserteq!(dtg1ts.default(&None), defaultutc); asserteq!(dtg1ts.default(&tzutc), defaultutc); asserteq!(dtg1ts.default(&tzmt), defaultmt);

asserteq!(dtg1ts.format(&defaultfmt, &None), defaultutc); asserteq!(dtg1ts.format(&defaultfmt, &tzutc), defaultutc); asserteq!(dtg1ts.format(&defaultfmt, &tzmt), default_mt);

// RFC 3339 format

asserteq!(dtg1ts.rfc3339(), rfc3339); asserteq!(dtg1ts.format(&None, &None), rfc_3339);

// "x" format

asserteq!(dtg1ts.xformat(), x); asserteq!(dtg1_ts.format(&Some(Format::X), &None), x);

// "a" format

asserteq!(dtg1ts.aformat(&None), autc); asserteq!(dtg1ts.aformat(&tzutc), autc); asserteq!(dtg1ts.aformat(&tzmt), a_mt);

asserteq!(dtg1ts.format(&Some(Format::A), &None), autc); asserteq!(dtg1ts.format(&Some(Format::A), &tzutc), autc); asserteq!(dtg1ts.format(&Some(Format::A), &tzmt), amt);

// Custom format

asserteq!(dtg1ts.format(&dayofweekfmt, &None), dayofweekutc); asserteq!(dtg1ts.format(&dayofweekfmt, &tzmt), dayofweek_mt); ```