fn main() -> Result<(), tz::Error> {
#[cfg(feature = "std")]
{
use tz::{DateTime, LocalTimeType, TimeZone, UtcDateTime};
let unix_time = 946684800;
let time_zone_utc = TimeZone::utc();
println!("{:?}", time_zone_utc.find_local_time_type(unix_time)?);
let time_zone_fixed = TimeZone::fixed(-3600)?;
println!("{:?}", time_zone_fixed.find_local_time_type(unix_time)?.ut_offset());
let time_zone_local = TimeZone::local()?;
println!("{:?}", time_zone_local.find_local_time_type(unix_time)?.ut_offset());
println!("{:?}", time_zone_local.find_current_local_time_type()?);
let _ = TimeZone::from_posix_tz("/usr/share/zoneinfo/Pacific/Auckland");
let _ = TimeZone::from_posix_tz("Pacific/Auckland");
TimeZone::from_posix_tz("HST10")?;
TimeZone::from_posix_tz("<-03>3")?;
TimeZone::from_posix_tz("NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0")?;
let _ = TimeZone::from_posix_tz(":UTC");
println!("{:?}", UtcDateTime::now()?);
let utc_date_time = UtcDateTime::new(2000, 1, 1, 0, 0, 0, 123_456_789)?;
println!("{utc_date_time}");
println!("{utc_date_time:?}");
let other_utc_date_time = UtcDateTime::from_timespec(946684800, 123_456_789)?;
println!("{other_utc_date_time}");
println!("{other_utc_date_time:?}");
let date_time = utc_date_time.project(TimeZone::fixed(-3600)?.as_ref())?;
println!("{date_time}");
println!("{date_time:#?}");
let other_date_time = date_time.project(TimeZone::fixed(3600)?.as_ref())?;
println!("{other_date_time}");
println!("{other_date_time:#?}");
let another_date_time = DateTime::from_timespec(946684800, 123_456_789, TimeZone::fixed(86400)?.as_ref())?;
println!("{another_date_time}");
println!("{another_date_time:#?}");
println!("{:?}", (utc_date_time.unix_time(), utc_date_time.nanoseconds()));
println!("{:?}", (other_utc_date_time.unix_time(), other_utc_date_time.nanoseconds()));
println!("{:?}", (date_time.unix_time(), date_time.nanoseconds()));
println!("{:?}", (other_date_time.unix_time(), other_date_time.nanoseconds()));
let neg_utc_date_time = UtcDateTime::from_timespec(-1, 123_456_789)?;
println!("{neg_utc_date_time}");
println!("{}", neg_utc_date_time.total_nanoseconds());
let time_zone_local = TimeZone::local()?;
println!("{:#?}", DateTime::now(time_zone_local.as_ref())?);
println!("{:#?}", DateTime::new(2000, 1, 1, 1, 0, 0, 123_456_789, LocalTimeType::with_ut_offset(3600)?)?);
let time_zone = TimeZone::from_posix_tz("CET-1CEST,M3.5.0,M10.5.0/3")?;
let found_date_times = DateTime::find(2000, 1, 1, 0, 0, 0, 0, time_zone.as_ref())?;
println!("{found_date_times:#?}");
println!("{:#?}", found_date_times.unique());
println!("{:#?}", found_date_times.earliest());
println!("{:#?}", found_date_times.latest());
let found_date_times = DateTime::find(2000, 3, 26, 2, 30, 0, 0, time_zone.as_ref())?;
println!("{found_date_times:#?}");
println!("{:#?}", found_date_times.unique());
println!("{:#?}", found_date_times.earliest());
println!("{:#?}", found_date_times.latest());
let found_date_times = DateTime::find(2000, 10, 29, 2, 30, 0, 0, time_zone.as_ref())?;
println!("{found_date_times:#?}");
println!("{:#?}", found_date_times.unique());
println!("{:#?}", found_date_times.earliest());
println!("{:#?}", found_date_times.latest());
}
Ok(())
}