From c3eaed61683537be9c4c0f03cf7b7bc2c8d91b65 Mon Sep 17 00:00:00 2001 From: Jonathan Strong Date: Thu, 26 Aug 2021 23:03:58 -0400 Subject: [PATCH] add handling for 'now' as time input, uses the current time --- src/lib.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 9a4c2b1..4c237cd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,13 @@ lazy_static::lazy_static! { static ref ZERO_PADDED_OFFSET: regex::Regex = regex::Regex::new(r#"(?P[+-])0(?P
\d)h"#).unwrap(); } -fn parse_time(time_input: &str) -> NaiveTime { +fn parse_time(time_input: &str, fromtz: &Tz) -> NaiveTime { + let time_input = time_input.trim(); + + if time_input.eq_ignore_ascii_case("now") { + return Utc::now().with_timezone(fromtz).time() + } + let time: String = time_input.split_whitespace().collect::>().join(""); match NaiveTime::parse_from_str(&time, "%H:%M") { Ok(t) => return t, @@ -57,7 +63,7 @@ pub fn convert(from: &str, to: &str, time: &str, day: Option, date: Opti Err(e) => panic!("failed to parse to tz: {} (input = '{}')", e, to), }; - let tm = parse_time(time); + let tm = parse_time(time, &fromtz); let dt: Date = match date { Some(dt) => fromtz.from_local_date(&dt).unwrap(),