#[macro_export]
macro_rules! ymd_hms {
($y:literal-$mo:literal-$d:literal $h:literal:$m:literal:$s:literal) => {
$crate::calendar::DateTime (
$crate::calendar::Date::ymd_checked($y, $mo, $d),
$crate::calendar::Time::hms_checked($h, $m, $s)
)
};
($y:literal-$mo:literal-$d:literal) => {
$crate::calendar::DateTime (
$crate::calendar::Date::ymd_checked($y, $mo, $d),
$crate::calendar::Time::MIDNIGHT
)
};
}
#[macro_export]
macro_rules! utc {
($y:literal-$mo:literal-$d:literal $h:literal:$m:literal:$s:literal) => {
$crate::calendar::Utc::resolve(
$crate::ymd_hms!($y-$mo-$d $h:$m:$s)
)
};
($y:literal-$mo:literal-$d:literal) => {
$crate::calendar::Utc::resolve(
$crate::ymd_hms!($y-$mo-$d)
)
};
}
#[test]
fn ymd_hms() {
use super::{DateTime, Date, Time};
let DateTime(date, time) = ymd_hms!(2020-01-01 00:00:00);
assert_eq!(date, Date::ymd(2020, 1, 1));
assert_eq!(time, Time::MIDNIGHT);
let DateTime(date, time) = ymd_hms!(2020-01-01);
assert_eq!(date, Date::ymd(2020, 1, 1));
assert_eq!(time, Time::MIDNIGHT);
}
#[test]
fn utc() {
assert_eq!(0, utc!(1970-01-01).timestamp);
assert_eq!(0, utc!(1970-01-01 00:00:00).timestamp);
assert_eq!(1514764800, utc!(2018-01-01).timestamp);
assert_eq!(1514764800, utc!(2018-01-01 00:00:00).timestamp);
assert_eq!(1641168000, utc!(2022-01-03).timestamp);
assert_eq!(1641168000, utc!(2022-01-03 00:00:00).timestamp);
assert_eq!(1582934400, utc!(2020-02-29).timestamp);
assert_eq!(1582934400, utc!(2020-02-29 00:00:00).timestamp);
assert_eq!(1583020800, utc!(2020-03-01).timestamp);
assert_eq!(1583020800, utc!(2020-03-01 00:00:00).timestamp);
}