use PHASEXave::{
CalendarView,
Date, Time,
Zone, Sign,
Months, Week,
RataDie,
};
use date_cli::{
parse::{parse_args},
};
fn make_output(view: CalendarView, time_zone: Zone, method: fn(CalendarView, u64, u8, u8) -> Week) {
let date: Date;
if time_zone.sign == Sign::Unsigned && time_zone.hours == 255 && time_zone.minutes == 255 && time_zone.seconds == 255 {
date = Date::local(view);
} else {
date = Date::now(view, time_zone);
}
let time: Time = Time::now(date.time_zone);
print!(
"{day_of_week} {month} {day} {hours:02}:{minutes:02}:{seconds:02}",
day_of_week = method(view, date.year, date.month, date.day).name(),
month = Months::from(date.month).name(),
day = date.day,
hours = time.hours,
minutes = time.minutes,
seconds = time.seconds
);
if date.time_zone.sign == Sign::Unsigned {
print!("+")
} else if date.time_zone.sign == Sign::Signed {
print!("-");
} else {
panic!("[PANIC] Unknown zone sign!");
}
println!(
"{timezone_hours:02}:{timezone_minutes:02}:{timezone_seconds:02} {year} {ce_era_days} {calendar_view:?}",
timezone_hours = date.time_zone.hours,
timezone_minutes = date.time_zone.minutes,
timezone_seconds = date.time_zone.seconds,
year = date.year,
ce_era_days = date.era_days,
calendar_view = view
)
}
fn main() {
let (
mut time_zone,
mut method,
mut view,
)
:
(
Zone,
fn(CalendarView, u64, u8, u8) -> Week,
CalendarView,
)
=
(
Zone { sign: Sign::Unsigned, hours: 255, minutes: 255, seconds: 255 },
<Date as RataDie>::from,
CalendarView::Gregorian,
);
parse_args(&mut time_zone, &mut method, &mut view);
make_output(view, time_zone, method);
}