diff options
-rw-r--r-- | src/icalwrap/icaltimezone.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/icalwrap/icaltimezone.rs b/src/icalwrap/icaltimezone.rs index 1354fa1..465c2b1 100644 --- a/src/icalwrap/icaltimezone.rs +++ b/src/icalwrap/icaltimezone.rs @@ -63,6 +63,10 @@ impl IcalTimeZone { ical::icaltimezone_get_utc_offset(self.timezone, &mut icaltime , &mut is_dst) } } + + pub fn ymd(&self, year: i32, month: i32, day: i32) -> IcalTime { + IcalTime::floating_ymd(year, month, day).with_timezone(&self) + } } #[cfg(test)] @@ -107,6 +111,24 @@ mod tests { } #[test] + fn test_ymd() { + let tz = IcalTimeZone::from_name("US/Eastern").unwrap(); + let date = tz.ymd(2014,3,1); + assert_eq!(IcalTime::floating_ymd(2014,3,1), date); + assert_eq!(1393650000, date.timestamp()); + assert_eq!("US/Eastern", date.get_timezone().unwrap().get_name()); + } + + #[test] + fn test_ymd_and_hms() { + let tz = IcalTimeZone::from_name("US/Eastern").unwrap(); + let date = tz.ymd(2014,3,1).and_hms(17, 20, 0); + assert_eq!(IcalTime::floating_ymd(2014,3,1).and_hms(17, 20, 0), date); + assert_eq!(1393712400, date.timestamp()); + assert_eq!("US/Eastern", date.get_timezone().unwrap().get_name()); + } + + #[test] fn test_from_name() { let tz = IcalTimeZone::from_name("US/Eastern").unwrap(); assert_eq!("US/Eastern", tz.get_name()); |