#[cfg(test)] mod tests { use chrono::{DateTime, FixedOffset, NaiveDate, TimeZone}; use chrono_tz::{ America::{New_York, Phoenix}, Tz, US::Mountain, }; #[test] fn it_saves_with_offset() { let date = Phoenix.with_ymd_and_hms(2023, 10, 13, 23, 0, 0).unwrap(); assert_eq!(date.to_rfc3339(), "2023-10-13T23:00:00-07:00"); assert_eq!(date.date_naive().to_string(), "2023-10-13"); assert_eq!( date.with_timezone(&New_York).to_rfc3339(), "2023-10-14T02:00:00-04:00" ); assert_eq!( date.with_timezone(&New_York).date_naive().to_string(), "2023-10-14" ); } #[test] fn it_can_parse_with_offset() { let reference = "2023-10-13T23:00:00-08:00"; let date = DateTime::parse_from_rfc3339(reference).unwrap(); assert_eq!( date, FixedOffset::west_opt(8 * 60 * 60) .unwrap() .with_ymd_and_hms(2023, 10, 13, 23, 0, 0) .unwrap() ); assert_eq!( date.with_timezone(&New_York), FixedOffset::west_opt(4 * 60 * 60) .unwrap() .with_ymd_and_hms(2023, 10, 14, 03, 0, 0) .unwrap() ); assert_eq!( date.date_naive(), NaiveDate::from_ymd_opt(2023, 10, 13).unwrap() ); assert_eq!( date.with_timezone(&New_York).date_naive(), NaiveDate::from_ymd_opt(2023, 10, 14).unwrap() ); } }