Compare commits

..

2 commits

Author SHA1 Message Date
Christina Sørensen
1d8eb97e2a
feat: allow all rfc3339 size lengths
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2024-05-10 13:36:16 +02:00
Christina Sørensen
0ec1a74a11
feat: check arguments length
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
2024-05-10 13:35:35 +02:00

View file

@ -5,29 +5,21 @@ use std::{env, io};
fn main() -> io::Result<()> { fn main() -> io::Result<()> {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
// TODO: change expected length to rfc3339 if args.len() == 1
// if args.len() == 1 || args[1].len() != 8 as usize { || !(args[1].len() == 8 as usize
// println!("usage: since hh:mm:ss"); || args[1].len() == 19 as usize
// std::process::abort(); || args[1].len() >= 21 as usize)
// } {
println!("usage: since hh:mm:ss"); //8
println!("usage: since yyyy-mm-dd hh:mm:ss"); //19
println!("usage: since <RFC 3339 timestamp>"); //21
std::process::abort();
}
let buffer = &args[1]; let buffer = &args[1];
//println!("{buffer}");
let tz = *Local::now().offset(); let tz = *Local::now().offset();
// println!(
// "{}",
// NaiveDateTime::new(
// Local::now().date_naive(),
// NaiveTime::parse_from_str("12:00:00", "%H:%M:%S").unwrap()
// )
// .and_local_timezone(tz)
// .single()
// .unwrap()
// );
let timestamp: DateTime<Local>; let timestamp: DateTime<Local>;
if let Some(t) = buffer.parse::<DateTime<Local>>().ok() { if let Some(t) = buffer.parse::<DateTime<Local>>().ok() {
timestamp = t; timestamp = t;
@ -44,12 +36,8 @@ fn main() -> io::Result<()> {
std::process::abort(); std::process::abort();
} }
// NOTE: is local appropriate here?
let now = Local::now(); let now = Local::now();
// println!("{}", timestamp.to_rfc3339());
// println!("{}", now.to_rfc3339());
let delta = DateTime::signed_duration_since(now, timestamp); let delta = DateTime::signed_duration_since(now, timestamp);
let days = ((delta.num_seconds() / 60) / 60) / 24; let days = ((delta.num_seconds() / 60) / 60) / 24;