about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2024-12-18 04:31:03 -0600
committergennyble <gen@nyble.dev>2024-12-18 04:31:03 -0600
commitd994eda887829c0b4e4c9f315cd9ff1320ddc4a9 (patch)
treeb74c4435cea0c82f6b1de5f2154cfa9f01aa6b85
parentac4b97aaa1bf246d369952e502df9d9dd7bbd466 (diff)
downloadawake-d994eda887829c0b4e4c9f315cd9ff1320ddc4a9.tar.gz
awake-d994eda887829c0b4e4c9f315cd9ff1320ddc4a9.zip
Parses 12-hour time correctly
-rwxr-xr-xsrc/timeparse.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/timeparse.rs b/src/timeparse.rs
index 830253b..5df731e 100755
--- a/src/timeparse.rs
+++ b/src/timeparse.rs
@@ -8,7 +8,9 @@ use time::{
 const FMT: &[FormatItem<'_>] = format_description!("[year]-[month]-[day] [hour]:[minute]");
 
 const DATE: &[FormatItem<'_>] = format_description!("[year]-[month]-[day]");
-const TIME: &[FormatItem<'_>] = format_description!("[hour]:[minute]");
+const TIME_24HOUR: &[FormatItem<'_>] = format_description!("[hour padding:zero]:[minute]");
+const TIME_12HOUR: &[FormatItem<'_>] =
+	format_description!("[hour padding:none]:[minute][period case:lower case_sensitive:false]");
 
 #[allow(unused)]
 const OFFSET: &[FormatItem<'_>] =
@@ -85,7 +87,10 @@ fn parse_offset(raw: &str) -> UtcOffset {
 }
 
 fn parse_time(raw: &str) -> Result<Time, time::error::Parse> {
-	Time::parse(raw, TIME)
+	match Time::parse(raw, TIME_24HOUR) {
+		Err(_e) => Time::parse(raw, TIME_12HOUR),
+		Ok(t) => Ok(t),
+	}
 }
 
 fn parse_date(raw: &str) -> Result<Date, time::error::Parse> {