From 2a979cd98ff316034333d89e38c9d1b8c80d9ac3 Mon Sep 17 00:00:00 2001 From: Ondrej Novak Date: Thu, 19 Feb 2026 22:02:59 +0100 Subject: [PATCH] simplify date and time parsing --- src/calendar.rs | 4 ---- src/cli.rs | 27 +++++++++++++++------------ 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/src/calendar.rs b/src/calendar.rs index 473570b..c4dc962 100644 --- a/src/calendar.rs +++ b/src/calendar.rs @@ -46,10 +46,6 @@ pub fn create_timetable( Ok(create_timetable_vecs(&time_in_timezone.time(), padding_hrs)) } -pub fn get_todays_date() -> String { - Local::now().format("%d-%m-%Y").to_string() -} - #[cfg(test)] mod tests { use super::*; diff --git a/src/cli.rs b/src/cli.rs index ac0751d..4bf01a6 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,4 +1,4 @@ -use super::calendar::{create_timetable, get_todays_date}; +use super::calendar::create_timetable; use chrono::Local; use chrono::NaiveDate; @@ -69,20 +69,23 @@ pub fn print_timezones( local_timezone: &String, padding_hours: i8, ) -> Result<(), CliError> { - let todays_date = &get_todays_date(); - let date = date.unwrap_or(todays_date); - let time_now = Local::now().format("%H:%M").to_string(); - let time = time.unwrap_or(&time_now); - - let parsed_time = if let Ok(hour) = time.parse::() { - NaiveTime::from_hms_opt(hour, 0, 0).ok_or(CliError::CouldNotParseTime)? + let parsed_time = if let Some(t) = time { + if let Ok(hour) = t.parse::() { + NaiveTime::from_hms_opt(hour, 0, 0).ok_or(CliError::CouldNotParseTime)? + } else { + NaiveTime::parse_from_str(t, "%H:%M").map_err(|_| CliError::CouldNotParseTime)? + } } else { - NaiveTime::parse_from_str(time, "%H:%M").map_err(|_| CliError::CouldNotParseTime)? + Local::now().naive_local().time() }; - let parsed_date = NaiveDate::parse_from_str(date, "%d-%m-%Y") - .or_else(|_| NaiveDate::parse_from_str(date, "%d-%m")) - .map_err(|_| CliError::CouldNotParseDate)?; + let parsed_date = if let Some(d) = date { + NaiveDate::parse_from_str(d, "%d-%m-%Y") + .or_else(|_| NaiveDate::parse_from_str(d, "%d-%m")) + .map_err(|_| CliError::CouldNotParseDate)? + } else { + Local::now().naive_local().date() + }; if local_timezone == "Local" { print_calendar(