pub struct FoundDateTimeList(/* private fields */);
Available on crate feature
alloc
only.Expand description
List containing the found date times created by the DateTime::find
method.
It can be empty if no local time type was found for the provided date, time and time zone.
Implementations§
Source§impl FoundDateTimeList
impl FoundDateTimeList
Sourcepub fn unique(&self) -> Option<DateTime>
pub fn unique(&self) -> Option<DateTime>
Returns the found date time if existing and unique
Examples found in repository?
examples/time.rs (line 98)
1fn main() -> Result<(), tz::Error> {
2 #[cfg(feature = "std")]
3 {
4 use tz::{DateTime, LocalTimeType, TimeZone, UtcDateTime};
5
6 //
7 // TimeZone
8 //
9
10 // 2000-01-01T00:00:00Z
11 let unix_time = 946684800;
12
13 // Get UTC time zone
14 let time_zone_utc = TimeZone::utc();
15 println!("{:?}", time_zone_utc.find_local_time_type(unix_time)?);
16
17 // Get fixed time zone at GMT-1
18 let time_zone_fixed = TimeZone::fixed(-3600)?;
19 println!("{:?}", time_zone_fixed.find_local_time_type(unix_time)?.ut_offset());
20
21 // Get local time zone (UNIX only)
22 let time_zone_local = TimeZone::local()?;
23 println!("{:?}", time_zone_local.find_local_time_type(unix_time)?.ut_offset());
24
25 // Get the current local time type
26 println!("{:?}", time_zone_local.find_current_local_time_type()?);
27
28 // Get time zone from a TZ string:
29 // From an absolute file
30 let _ = TimeZone::from_posix_tz("/usr/share/zoneinfo/Pacific/Auckland");
31 // From a file relative to the system timezone directory
32 let _ = TimeZone::from_posix_tz("Pacific/Auckland");
33 // From a time zone description
34 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 // Use a leading colon to force searching for a corresponding file
38 let _ = TimeZone::from_posix_tz(":UTC");
39
40 //
41 // DateTime
42 //
43
44 // Get the current UTC date time
45 println!("{:?}", UtcDateTime::now()?);
46
47 // Create a new UTC date time (2000-01-01T00:00:00.123456789Z)
48 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 // Create a new UTC date time from a Unix time with nanoseconds (2000-01-01T00:00:00.123456789Z)
53 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 // Project the UTC date time to a time zone
58 let date_time = utc_date_time.project(TimeZone::fixed(-3600)?.as_ref())?;
59 println!("{date_time}");
60 println!("{date_time:#?}");
61
62 // Project the date time to another time zone
63 let other_date_time = date_time.project(TimeZone::fixed(3600)?.as_ref())?;
64 println!("{other_date_time}");
65 println!("{other_date_time:#?}");
66
67 // Create a new date time from a Unix time with nanoseconds and a time zone (2000-01-01T00:00:00.123456789Z)
68 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 // Get the corresponding UTC Unix times with nanoseconds
73 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 // Nanoseconds are always added towards the future
79 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 // Get the current date time at the local time zone (UNIX only)
84 let time_zone_local = TimeZone::local()?;
85 println!("{:#?}", DateTime::now(time_zone_local.as_ref())?);
86
87 // Create a new date time with an UTC offset (2000-01-01T01:00:00.123456789+01:00)
88 println!("{:#?}", DateTime::new(2000, 1, 1, 1, 0, 0, 123_456_789, LocalTimeType::with_ut_offset(3600)?)?);
89
90 //
91 // Find the possible date times corresponding to a date, a time and a time zone
92 //
93 let time_zone = TimeZone::from_posix_tz("CET-1CEST,M3.5.0,M10.5.0/3")?;
94
95 // Found date time is unique
96 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 // Found date time was skipped by a forward transition
103 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 // Found date time is ambiguous because of a backward transition
110 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}
Sourcepub fn earliest(&self) -> Option<DateTime>
pub fn earliest(&self) -> Option<DateTime>
Returns the earliest found date time if existing
Examples found in repository?
examples/time.rs (line 99)
1fn main() -> Result<(), tz::Error> {
2 #[cfg(feature = "std")]
3 {
4 use tz::{DateTime, LocalTimeType, TimeZone, UtcDateTime};
5
6 //
7 // TimeZone
8 //
9
10 // 2000-01-01T00:00:00Z
11 let unix_time = 946684800;
12
13 // Get UTC time zone
14 let time_zone_utc = TimeZone::utc();
15 println!("{:?}", time_zone_utc.find_local_time_type(unix_time)?);
16
17 // Get fixed time zone at GMT-1
18 let time_zone_fixed = TimeZone::fixed(-3600)?;
19 println!("{:?}", time_zone_fixed.find_local_time_type(unix_time)?.ut_offset());
20
21 // Get local time zone (UNIX only)
22 let time_zone_local = TimeZone::local()?;
23 println!("{:?}", time_zone_local.find_local_time_type(unix_time)?.ut_offset());
24
25 // Get the current local time type
26 println!("{:?}", time_zone_local.find_current_local_time_type()?);
27
28 // Get time zone from a TZ string:
29 // From an absolute file
30 let _ = TimeZone::from_posix_tz("/usr/share/zoneinfo/Pacific/Auckland");
31 // From a file relative to the system timezone directory
32 let _ = TimeZone::from_posix_tz("Pacific/Auckland");
33 // From a time zone description
34 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 // Use a leading colon to force searching for a corresponding file
38 let _ = TimeZone::from_posix_tz(":UTC");
39
40 //
41 // DateTime
42 //
43
44 // Get the current UTC date time
45 println!("{:?}", UtcDateTime::now()?);
46
47 // Create a new UTC date time (2000-01-01T00:00:00.123456789Z)
48 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 // Create a new UTC date time from a Unix time with nanoseconds (2000-01-01T00:00:00.123456789Z)
53 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 // Project the UTC date time to a time zone
58 let date_time = utc_date_time.project(TimeZone::fixed(-3600)?.as_ref())?;
59 println!("{date_time}");
60 println!("{date_time:#?}");
61
62 // Project the date time to another time zone
63 let other_date_time = date_time.project(TimeZone::fixed(3600)?.as_ref())?;
64 println!("{other_date_time}");
65 println!("{other_date_time:#?}");
66
67 // Create a new date time from a Unix time with nanoseconds and a time zone (2000-01-01T00:00:00.123456789Z)
68 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 // Get the corresponding UTC Unix times with nanoseconds
73 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 // Nanoseconds are always added towards the future
79 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 // Get the current date time at the local time zone (UNIX only)
84 let time_zone_local = TimeZone::local()?;
85 println!("{:#?}", DateTime::now(time_zone_local.as_ref())?);
86
87 // Create a new date time with an UTC offset (2000-01-01T01:00:00.123456789+01:00)
88 println!("{:#?}", DateTime::new(2000, 1, 1, 1, 0, 0, 123_456_789, LocalTimeType::with_ut_offset(3600)?)?);
89
90 //
91 // Find the possible date times corresponding to a date, a time and a time zone
92 //
93 let time_zone = TimeZone::from_posix_tz("CET-1CEST,M3.5.0,M10.5.0/3")?;
94
95 // Found date time is unique
96 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 // Found date time was skipped by a forward transition
103 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 // Found date time is ambiguous because of a backward transition
110 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}
Sourcepub fn latest(&self) -> Option<DateTime>
pub fn latest(&self) -> Option<DateTime>
Returns the latest found date time if existing
Examples found in repository?
examples/time.rs (line 100)
1fn main() -> Result<(), tz::Error> {
2 #[cfg(feature = "std")]
3 {
4 use tz::{DateTime, LocalTimeType, TimeZone, UtcDateTime};
5
6 //
7 // TimeZone
8 //
9
10 // 2000-01-01T00:00:00Z
11 let unix_time = 946684800;
12
13 // Get UTC time zone
14 let time_zone_utc = TimeZone::utc();
15 println!("{:?}", time_zone_utc.find_local_time_type(unix_time)?);
16
17 // Get fixed time zone at GMT-1
18 let time_zone_fixed = TimeZone::fixed(-3600)?;
19 println!("{:?}", time_zone_fixed.find_local_time_type(unix_time)?.ut_offset());
20
21 // Get local time zone (UNIX only)
22 let time_zone_local = TimeZone::local()?;
23 println!("{:?}", time_zone_local.find_local_time_type(unix_time)?.ut_offset());
24
25 // Get the current local time type
26 println!("{:?}", time_zone_local.find_current_local_time_type()?);
27
28 // Get time zone from a TZ string:
29 // From an absolute file
30 let _ = TimeZone::from_posix_tz("/usr/share/zoneinfo/Pacific/Auckland");
31 // From a file relative to the system timezone directory
32 let _ = TimeZone::from_posix_tz("Pacific/Auckland");
33 // From a time zone description
34 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 // Use a leading colon to force searching for a corresponding file
38 let _ = TimeZone::from_posix_tz(":UTC");
39
40 //
41 // DateTime
42 //
43
44 // Get the current UTC date time
45 println!("{:?}", UtcDateTime::now()?);
46
47 // Create a new UTC date time (2000-01-01T00:00:00.123456789Z)
48 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 // Create a new UTC date time from a Unix time with nanoseconds (2000-01-01T00:00:00.123456789Z)
53 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 // Project the UTC date time to a time zone
58 let date_time = utc_date_time.project(TimeZone::fixed(-3600)?.as_ref())?;
59 println!("{date_time}");
60 println!("{date_time:#?}");
61
62 // Project the date time to another time zone
63 let other_date_time = date_time.project(TimeZone::fixed(3600)?.as_ref())?;
64 println!("{other_date_time}");
65 println!("{other_date_time:#?}");
66
67 // Create a new date time from a Unix time with nanoseconds and a time zone (2000-01-01T00:00:00.123456789Z)
68 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 // Get the corresponding UTC Unix times with nanoseconds
73 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 // Nanoseconds are always added towards the future
79 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 // Get the current date time at the local time zone (UNIX only)
84 let time_zone_local = TimeZone::local()?;
85 println!("{:#?}", DateTime::now(time_zone_local.as_ref())?);
86
87 // Create a new date time with an UTC offset (2000-01-01T01:00:00.123456789+01:00)
88 println!("{:#?}", DateTime::new(2000, 1, 1, 1, 0, 0, 123_456_789, LocalTimeType::with_ut_offset(3600)?)?);
89
90 //
91 // Find the possible date times corresponding to a date, a time and a time zone
92 //
93 let time_zone = TimeZone::from_posix_tz("CET-1CEST,M3.5.0,M10.5.0/3")?;
94
95 // Found date time is unique
96 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 // Found date time was skipped by a forward transition
103 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 // Found date time is ambiguous because of a backward transition
110 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}
Sourcepub fn into_inner(self) -> Vec<FoundDateTimeKind>
pub fn into_inner(self) -> Vec<FoundDateTimeKind>
Extracts and returns the inner list of found date times
Trait Implementations§
Source§impl Clone for FoundDateTimeList
impl Clone for FoundDateTimeList
Source§fn clone(&self) -> FoundDateTimeList
fn clone(&self) -> FoundDateTimeList
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for FoundDateTimeList
impl Debug for FoundDateTimeList
Source§impl Default for FoundDateTimeList
impl Default for FoundDateTimeList
Source§fn default() -> FoundDateTimeList
fn default() -> FoundDateTimeList
Returns the “default value” for a type. Read more
Source§impl PartialEq for FoundDateTimeList
impl PartialEq for FoundDateTimeList
impl StructuralPartialEq for FoundDateTimeList
Auto Trait Implementations§
impl Freeze for FoundDateTimeList
impl RefUnwindSafe for FoundDateTimeList
impl Send for FoundDateTimeList
impl Sync for FoundDateTimeList
impl Unpin for FoundDateTimeList
impl UnwindSafe for FoundDateTimeList
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more