Browse Source

add handling for 'now' as time input, uses the current time

tags/v1.2.1
Jonathan Strong 2 years ago
parent
commit
c3eaed6168
1 changed files with 8 additions and 2 deletions
  1. +8
    -2
      src/lib.rs

+ 8
- 2
src/lib.rs View File

@@ -9,7 +9,13 @@ lazy_static::lazy_static! {
static ref ZERO_PADDED_OFFSET: regex::Regex = regex::Regex::new(r#"(?P<sign>[+-])0(?P<hr>\d)h"#).unwrap(); static ref ZERO_PADDED_OFFSET: regex::Regex = regex::Regex::new(r#"(?P<sign>[+-])0(?P<hr>\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::<Vec<_>>().join(""); let time: String = time_input.split_whitespace().collect::<Vec<_>>().join("");
match NaiveTime::parse_from_str(&time, "%H:%M") { match NaiveTime::parse_from_str(&time, "%H:%M") {
Ok(t) => return t, Ok(t) => return t,
@@ -57,7 +63,7 @@ pub fn convert(from: &str, to: &str, time: &str, day: Option<String>, date: Opti
Err(e) => panic!("failed to parse to tz: {} (input = '{}')", e, to), 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<Tz> = match date { let dt: Date<Tz> = match date {
Some(dt) => fromtz.from_local_date(&dt).unwrap(), Some(dt) => fromtz.from_local_date(&dt).unwrap(),


Loading…
Cancel
Save