pub struct LocalTimeType { /* private fields */ }
Expand description
Local time type associated to a time zone
Implementations§
Source§impl LocalTimeType
impl LocalTimeType
Sourcepub const fn new(
ut_offset: i32,
is_dst: bool,
time_zone_designation: Option<&[u8]>,
) -> Result<Self, LocalTimeTypeError>
pub const fn new( ut_offset: i32, is_dst: bool, time_zone_designation: Option<&[u8]>, ) -> Result<Self, LocalTimeTypeError>
Construct a local time type
Examples found in repository?
examples/statics.rs (line 27)
15 const TIME_ZONE_REF: TimeZoneRef<'static> = unwrap!(TimeZoneRef::new(
16 &[
17 Transition::new(-2334101314, 1),
18 Transition::new(-1157283000, 2),
19 Transition::new(-1155436200, 1),
20 Transition::new(-880198200, 3),
21 Transition::new(-769395600, 4),
22 Transition::new(-765376200, 1),
23 Transition::new(-712150200, 5),
24 ],
25 const {
26 &[
27 unwrap!(LocalTimeType::new(-37886, false, Some(b"LMT"))),
28 unwrap!(LocalTimeType::new(-37800, false, Some(b"HST"))),
29 unwrap!(LocalTimeType::new(-34200, true, Some(b"HDT"))),
30 unwrap!(LocalTimeType::new(-34200, true, Some(b"HWT"))),
31 unwrap!(LocalTimeType::new(-34200, true, Some(b"HPT"))),
32 unwrap!(LocalTimeType::new(-36000, false, Some(b"HST"))),
33 ]
34 },
35 &[
36 LeapSecond::new(78796800, 1),
37 LeapSecond::new(94694401, 2),
38 LeapSecond::new(126230402, 3),
39 LeapSecond::new(157766403, 4),
40 LeapSecond::new(189302404, 5),
41 LeapSecond::new(220924805, 6),
42 ],
43 const {
44 &Some(TransitionRule::Alternate(unwrap!(AlternateTime::new(
45 unwrap!(LocalTimeType::new(-36000, false, Some(b"HST"))),
46 unwrap!(LocalTimeType::new(-34200, true, Some(b"HPT"))),
47 RuleDay::MonthWeekDay(unwrap!(MonthWeekDay::new(10, 5, 0))),
48 93600,
49 RuleDay::MonthWeekDay(unwrap!(MonthWeekDay::new(3, 4, 4))),
50 7200,
51 ))))
52 },
53 ));
Sourcepub const fn with_ut_offset(ut_offset: i32) -> Result<Self, LocalTimeTypeError>
pub const fn with_ut_offset(ut_offset: i32) -> Result<Self, LocalTimeTypeError>
Construct a local time type with the specified UTC offset in seconds
Examples found in repository?
More examples
examples/time.rs (line 88)
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 const fn ut_offset(&self) -> i32
pub const fn ut_offset(&self) -> i32
Returns offset from UTC in seconds
Examples found in repository?
examples/time.rs (line 19)
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 const fn time_zone_designation(&self) -> &str
pub const fn time_zone_designation(&self) -> &str
Returns time zone designation
Trait Implementations§
Source§impl Clone for LocalTimeType
impl Clone for LocalTimeType
Source§fn clone(&self) -> LocalTimeType
fn clone(&self) -> LocalTimeType
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 LocalTimeType
impl Debug for LocalTimeType
Source§impl PartialEq for LocalTimeType
impl PartialEq for LocalTimeType
impl Copy for LocalTimeType
impl Eq for LocalTimeType
impl StructuralPartialEq for LocalTimeType
Auto Trait Implementations§
impl Freeze for LocalTimeType
impl RefUnwindSafe for LocalTimeType
impl Send for LocalTimeType
impl Sync for LocalTimeType
impl Unpin for LocalTimeType
impl UnwindSafe for LocalTimeType
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