1fn main() -> Result<(), tz::Error> {
2 #[cfg(feature = "std")]
3 {
4 use tz::{DateTime, LocalTimeType, TimeZone, UtcDateTime};
5
6 let unix_time = 946684800;
12
13 let time_zone_utc = TimeZone::utc();
15 println!("{:?}", time_zone_utc.find_local_time_type(unix_time)?);
16
17 let time_zone_fixed = TimeZone::fixed(-3600)?;
19 println!("{:?}", time_zone_fixed.find_local_time_type(unix_time)?.ut_offset());
20
21 let time_zone_local = TimeZone::local()?;
23 println!("{:?}", time_zone_local.find_local_time_type(unix_time)?.ut_offset());
24
25 println!("{:?}", time_zone_local.find_current_local_time_type()?);
27
28 let _ = TimeZone::from_posix_tz("/usr/share/zoneinfo/Pacific/Auckland");
31 let _ = TimeZone::from_posix_tz("Pacific/Auckland");
33 TimeZone::from_posix_tz("HST10")?;
35 TimeZone::from_posix_tz("<-03>3")?;
36 TimeZone::from_posix_tz("NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0")?;
37 let _ = TimeZone::from_posix_tz(":UTC");
39
40 println!("{:?}", UtcDateTime::now()?);
46
47 let utc_date_time = UtcDateTime::new(2000, 1, 1, 0, 0, 0, 123_456_789)?;
49 println!("{utc_date_time}");
50 println!("{utc_date_time:?}");
51
52 let other_utc_date_time = UtcDateTime::from_timespec(946684800, 123_456_789)?;
54 println!("{other_utc_date_time}");
55 println!("{other_utc_date_time:?}");
56
57 let date_time = utc_date_time.project(TimeZone::fixed(-3600)?.as_ref())?;
59 println!("{date_time}");
60 println!("{date_time:#?}");
61
62 let other_date_time = date_time.project(TimeZone::fixed(3600)?.as_ref())?;
64 println!("{other_date_time}");
65 println!("{other_date_time:#?}");
66
67 let another_date_time = DateTime::from_timespec(946684800, 123_456_789, TimeZone::fixed(86400)?.as_ref())?;
69 println!("{another_date_time}");
70 println!("{another_date_time:#?}");
71
72 println!("{:?}", (utc_date_time.unix_time(), utc_date_time.nanoseconds()));
74 println!("{:?}", (other_utc_date_time.unix_time(), other_utc_date_time.nanoseconds()));
75 println!("{:?}", (date_time.unix_time(), date_time.nanoseconds()));
76 println!("{:?}", (other_date_time.unix_time(), other_date_time.nanoseconds()));
77
78 let neg_utc_date_time = UtcDateTime::from_timespec(-1, 123_456_789)?;
80 println!("{neg_utc_date_time}");
81 println!("{}", neg_utc_date_time.total_nanoseconds());
82
83 let time_zone_local = TimeZone::local()?;
85 println!("{:#?}", DateTime::now(time_zone_local.as_ref())?);
86
87 println!("{:#?}", DateTime::new(2000, 1, 1, 1, 0, 0, 123_456_789, LocalTimeType::with_ut_offset(3600)?)?);
89
90 let time_zone = TimeZone::from_posix_tz("CET-1CEST,M3.5.0,M10.5.0/3")?;
94
95 let found_date_times = DateTime::find(2000, 1, 1, 0, 0, 0, 0, time_zone.as_ref())?;
97 println!("{found_date_times:#?}");
98 println!("{:#?}", found_date_times.unique());
99 println!("{:#?}", found_date_times.earliest());
100 println!("{:#?}", found_date_times.latest());
101
102 let found_date_times = DateTime::find(2000, 3, 26, 2, 30, 0, 0, time_zone.as_ref())?;
104 println!("{found_date_times:#?}");
105 println!("{:#?}", found_date_times.unique());
106 println!("{:#?}", found_date_times.earliest());
107 println!("{:#?}", found_date_times.latest());
108
109 let found_date_times = DateTime::find(2000, 10, 29, 2, 30, 0, 0, time_zone.as_ref())?;
111 println!("{found_date_times:#?}");
112 println!("{:#?}", found_date_times.unique());
113 println!("{:#?}", found_date_times.earliest());
114 println!("{:#?}", found_date_times.latest());
115 }
116
117 Ok(())
118}