diff options
author | Vincent Breitmoser <look@my.amazin.horse> | 2019-01-12 13:16:58 +0100 |
---|---|---|
committer | Vincent Breitmoser <look@my.amazin.horse> | 2019-01-12 13:16:58 +0100 |
commit | ebc52dca11c27c3b2013eb7a539e1966b7fdb41b (patch) | |
tree | 479cc0223be70565ad1b3543deb2607993f2d46c /src/utils/dateutil.rs | |
parent | fd87ee5aab404c86d42f75e9bc51f684382ad0f0 (diff) |
utils: move datetime_from_timestamp to dateutils
Diffstat (limited to 'src/utils/dateutil.rs')
-rw-r--r-- | src/utils/dateutil.rs | 111 |
1 files changed, 65 insertions, 46 deletions
diff --git a/src/utils/dateutil.rs b/src/utils/dateutil.rs index c020ecd..84818ce 100644 --- a/src/utils/dateutil.rs +++ b/src/utils/dateutil.rs @@ -36,57 +36,76 @@ pub fn week_from_str_end(date_str: &str) -> Result<Date<Local>,String> { Err("Could not parse '{}' as week".to_string()) } -#[test] -fn test_date_from_str() { - let date = date_from_str("2018-12-10").unwrap(); - assert_eq!("2018-12-10", format!("{}", date.format("%F"))); - let date = date_from_str("today").unwrap(); - assert_eq!(Local::now().date(), date); - let date = date_from_str("now").unwrap(); - assert_eq!(Local::now().date(), date); +pub fn datetime_from_timestamp(timestamp: &str) -> Option<DateTime<Utc>> { + let timestamp_i64 = timestamp.parse::<i64>().ok()?; + let naive_datetime = NaiveDateTime::from_timestamp_opt(timestamp_i64, 0)?; + Some(DateTime::from_utc(naive_datetime, Utc)) } -#[test] -#[should_panic] -fn test_date_from_str_negative() { - date_from_str("2018-02-30").unwrap(); -} +#[cfg(test)] +mod tests { + use super::*; -#[test] -fn test_week_from_str_begin() { - let date = week_from_str_begin("2018-W50").unwrap(); - assert_eq!("2018-12-10", format!("{}", date.format("%F"))); - let date = week_from_str_begin("W50").unwrap(); - assert_eq!("2019-12-09", format!("{}", date.format("%F"))); -} + #[test] + fn test_date_from_str() { + let date = date_from_str("2018-12-10").unwrap(); + assert_eq!("2018-12-10", format!("{}", date.format("%F"))); + let date = date_from_str("today").unwrap(); + assert_eq!(Local::now().date(), date); + let date = date_from_str("now").unwrap(); + assert_eq!(Local::now().date(), date); + } -#[test] -fn test_week_from_str_begin_current_year() { - // TODO test must be adapted once a year. hum. - let date = week_from_str_begin("W50").unwrap(); - assert_eq!("2019-12-09", format!("{}", date.format("%F"))); -} + #[test] + #[should_panic] + fn test_date_from_str_negative() { + date_from_str("2018-02-30").unwrap(); + } -#[test] -#[should_panic] -fn test_week_from_str_begin_neg() { - week_from_str_begin("nonsense").unwrap(); -} + #[test] + fn test_week_from_str_begin() { + let date = week_from_str_begin("2018-W50").unwrap(); + assert_eq!("2018-12-10", format!("{}", date.format("%F"))); + let date = week_from_str_begin("W50").unwrap(); + assert_eq!("2019-12-09", format!("{}", date.format("%F"))); + } -#[test] -fn test_week_from_str_end() { - let date = week_from_str_end("W50").unwrap(); - assert_eq!("2019-12-15", format!("{}", date.format("%F"))); -} -#[test] -fn test_week_from_str_end_current_year() { - // TODO test must be adapted once a year. hum. - let date = week_from_str_end("W50").unwrap(); - assert_eq!("2019-12-15", format!("{}", date.format("%F"))); -} + #[test] + fn test_week_from_str_begin_current_year() { + // TODO test must be adapted once a year. hum. + let date = week_from_str_begin("W50").unwrap(); + assert_eq!("2019-12-09", format!("{}", date.format("%F"))); + } + + #[test] + #[should_panic] + fn test_week_from_str_begin_neg() { + week_from_str_begin("nonsense").unwrap(); + } -#[test] -#[should_panic] -fn test_week_from_str_end_neg() { - week_from_str_end("nonsense").unwrap(); + #[test] + fn test_week_from_str_end() { + let date = week_from_str_end("W50").unwrap(); + assert_eq!("2019-12-15", format!("{}", date.format("%F"))); + } + #[test] + fn test_week_from_str_end_current_year() { + // TODO test must be adapted once a year. hum. + let date = week_from_str_end("W50").unwrap(); + assert_eq!("2019-12-15", format!("{}", date.format("%F"))); + } + + #[test] + #[should_panic] + fn test_week_from_str_end_neg() { + week_from_str_end("nonsense").unwrap(); + } + + #[test] + fn test_datetime_from_timestamp() { + let timestamp = "1547234687"; + let dt_from_ts = datetime_from_timestamp(timestamp).unwrap(); + let dt = Utc.ymd(2019, 01, 11).and_hms(19, 24, 47); + assert_eq!(dt, dt_from_ts); + } } |