From f3e58a635d58f3bbde4f818671c8878fba8cfd68 Mon Sep 17 00:00:00 2001 From: race604 Date: Wed, 31 Aug 2022 09:53:54 +0800 Subject: [PATCH] support H:M format in countdown --- src/app.rs | 6 ++++++ src/app/modes.rs | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app.rs b/src/app.rs index ba39b49..3c6a59d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -272,6 +272,12 @@ fn parse_datetime(s: &str) -> Result, String> { let s = s.trim(); let today = Local::today(); + let time = NaiveTime::parse_from_str(s, "%H:%M"); + if time.is_ok() { + let time = NaiveDateTime::new(today.naive_local(), time.unwrap()); + return Ok(Local.from_local_datetime(&time).unwrap()); + } + let time = NaiveTime::parse_from_str(s, "%H:%M:%S"); if time.is_ok() { let time = NaiveDateTime::new(today.naive_local(), time.unwrap()); diff --git a/src/app/modes.rs b/src/app/modes.rs index 2ea8d33..462d310 100644 --- a/src/app/modes.rs +++ b/src/app/modes.rs @@ -47,9 +47,6 @@ fn format_duration(duration: Duration, format: DurationFormat) -> String { } } - if is_neg { - result.push('-'); - } if days > 0 { let _ = write!(result, "{}:", days); } @@ -59,6 +56,10 @@ fn format_duration(duration: Duration, format: DurationFormat) -> String { } append_number(&mut result, minutes % 60); result.push(':'); + + if is_neg { + result.insert(0, '-'); + } match format { DurationFormat::HourMinSecDeci => { let _ = write!(result, "{:02}.{}", seconds % 60, (millis % 1000) / 100);