diff --git a/cli/src/argparse/args/time.rs b/cli/src/argparse/args/time.rs index 4581d0a41..029cfa8e1 100644 --- a/cli/src/argparse/args/time.rs +++ b/cli/src/argparse/args/time.rs @@ -154,11 +154,18 @@ fn named_date( move |input: &str| { let local_today = now.with_timezone(&local).date(); let remaining = &input[input.len()..]; + let day_index = local_today.weekday().num_days_from_monday(); match input { "yesterday" => Ok((remaining, local_today - Duration::days(1))), "today" => Ok((remaining, local_today)), "tomorrow" => Ok((remaining, local_today + Duration::days(1))), // TODO: lots more! + "eod"=>Ok((remaining,local_today+Duration::days(1))), + "sod"=>Ok((remaining,local_today)), + "eow"=> Ok((remaining,local_today+Duration::days((6-day_index).into()))), + "eoww"=>Ok((remaining,local_today+Duration::days((5-day_index).into()))), + "sow"=>Ok((remaining,local_today+Duration::days((6-day_index).into()))), + "soww"=>Ok((remaining,local_today+Duration::days((7-day_index).into()))), _ => Err(Err::Error(Error::new(input, ErrorKind::Tag))), } .map(|(rem, dt)| (rem, dt.and_hms(0, 0, 0).with_timezone(&Utc)))