pub struct DateTime { /* private fields */ }
Expand description
Date time associated to a local time type, exprimed in the proleptic gregorian calendar
Implementations§
Source§impl DateTime
impl DateTime
Sourcepub const fn new(
year: i32,
month: u8,
month_day: u8,
hour: u8,
minute: u8,
second: u8,
nanoseconds: u32,
local_time_type: LocalTimeType,
) -> Result<Self, DateTimeError>
pub const fn new( year: i32, month: u8, month_day: u8, hour: u8, minute: u8, second: u8, nanoseconds: u32, local_time_type: LocalTimeType, ) -> Result<Self, DateTimeError>
Construct a date time
§Inputs
year
: Yearmonth
: Month in[1, 12]
month_day
: Day of the month in[1, 31]
hour
: Hours since midnight in[0, 23]
minute
: Minutes in[0, 59]
second
: Seconds in[0, 60]
, with a possible leap secondnanoseconds
: Nanoseconds in[0, 999_999_999]
local_time_type
: Local time type associated to a time zone
Sourcepub fn find(
year: i32,
month: u8,
month_day: u8,
hour: u8,
minute: u8,
second: u8,
nanoseconds: u32,
time_zone_ref: TimeZoneRef<'_>,
) -> Result<FoundDateTimeList, TzError>
Available on crate feature alloc
only.
pub fn find( year: i32, month: u8, month_day: u8, hour: u8, minute: u8, second: u8, nanoseconds: u32, time_zone_ref: TimeZoneRef<'_>, ) -> Result<FoundDateTimeList, TzError>
alloc
only.Find the possible date times corresponding to a date, a time and a time zone
§Inputs
year
: Yearmonth
: Month in[1, 12]
month_day
: Day of the month in[1, 31]
hour
: Hours since midnight in[0, 23]
minute
: Minutes in[0, 59]
second
: Seconds in[0, 60]
, with a possible leap secondnanoseconds
: Nanoseconds in[0, 999_999_999]
time_zone_ref
: Reference to a time zone
Sourcepub fn find_n<'a>(
buf: &'a mut [Option<FoundDateTimeKind>],
year: i32,
month: u8,
month_day: u8,
hour: u8,
minute: u8,
second: u8,
nanoseconds: u32,
time_zone_ref: TimeZoneRef<'_>,
) -> Result<FoundDateTimeListRefMut<'a>, TzError>
pub fn find_n<'a>( buf: &'a mut [Option<FoundDateTimeKind>], year: i32, month: u8, month_day: u8, hour: u8, minute: u8, second: u8, nanoseconds: u32, time_zone_ref: TimeZoneRef<'_>, ) -> Result<FoundDateTimeListRefMut<'a>, TzError>
Find the possible date times corresponding to a date, a time and a time zone.
This method doesn’t allocate, and instead takes a preallocated buffer as an input.
It returns a FoundDateTimeListRefMut
wrapper which has additional methods.
§Inputs
buf
: Preallocated bufferyear
: Yearmonth
: Month in[1, 12]
month_day
: Day of the month in[1, 31]
hour
: Hours since midnight in[0, 23]
minute
: Minutes in[0, 59]
second
: Seconds in[0, 60]
, with a possible leap secondnanoseconds
: Nanoseconds in[0, 999_999_999]
time_zone_ref
: Reference to a time zone
§Usage
use tz::datetime::{DateTime, FoundDateTimeKind};
use tz::timezone::{LocalTimeType, TimeZoneRef, Transition};
let transitions = &[Transition::new(3600, 1), Transition::new(86400, 0), Transition::new(i64::MAX, 0)];
let local_time_types = &[LocalTimeType::new(0, false, Some(b"STD"))?, LocalTimeType::new(3600, true, Some(b"DST"))?];
let time_zone_ref = TimeZoneRef::new(transitions, local_time_types, &[], &None)?;
// Buffer is too small, so the results are non exhaustive
let mut small_buf = [None; 1];
assert!(!DateTime::find_n(&mut small_buf, 1970, 1, 2, 0, 30, 0, 0, time_zone_ref)?.is_exhaustive());
// Fill buffer
let mut buf = [None; 2];
let found_date_time_list = DateTime::find_n(&mut buf, 1970, 1, 2, 0, 30, 0, 0, time_zone_ref)?;
let data = found_date_time_list.data();
assert!(found_date_time_list.is_exhaustive());
assert_eq!(found_date_time_list.count(), 2);
assert!(matches!(data, [Some(FoundDateTimeKind::Normal(..)), Some(FoundDateTimeKind::Normal(..))]));
// We can reuse the buffer
let found_date_time_list = DateTime::find_n(&mut buf, 1970, 1, 1, 1, 30, 0, 0, time_zone_ref)?;
let data = found_date_time_list.data();
assert!(found_date_time_list.is_exhaustive());
assert_eq!(found_date_time_list.count(), 1);
assert!(found_date_time_list.unique().is_none()); // FoundDateTimeKind::Skipped
assert!(matches!(data, &[Some(FoundDateTimeKind::Skipped { .. })]));
Sourcepub const fn from_timespec_and_local(
unix_time: i64,
nanoseconds: u32,
local_time_type: LocalTimeType,
) -> Result<Self, ProjectDateTimeError>
pub const fn from_timespec_and_local( unix_time: i64, nanoseconds: u32, local_time_type: LocalTimeType, ) -> Result<Self, ProjectDateTimeError>
Construct a date time from a Unix time in seconds with nanoseconds and a local time type
Sourcepub const fn from_timespec(
unix_time: i64,
nanoseconds: u32,
time_zone_ref: TimeZoneRef<'_>,
) -> Result<Self, ProjectDateTimeError>
pub const fn from_timespec( unix_time: i64, nanoseconds: u32, time_zone_ref: TimeZoneRef<'_>, ) -> Result<Self, ProjectDateTimeError>
Construct a date time from a Unix time in seconds with nanoseconds and a time zone
Sourcepub const fn from_total_nanoseconds_and_local(
total_nanoseconds: i128,
local_time_type: LocalTimeType,
) -> Result<Self, ProjectDateTimeError>
pub const fn from_total_nanoseconds_and_local( total_nanoseconds: i128, local_time_type: LocalTimeType, ) -> Result<Self, ProjectDateTimeError>
Construct a date time from total nanoseconds since Unix epoch (1970-01-01T00:00:00Z
) and a local time type
Sourcepub const fn from_total_nanoseconds(
total_nanoseconds: i128,
time_zone_ref: TimeZoneRef<'_>,
) -> Result<Self, ProjectDateTimeError>
pub const fn from_total_nanoseconds( total_nanoseconds: i128, time_zone_ref: TimeZoneRef<'_>, ) -> Result<Self, ProjectDateTimeError>
Construct a date time from total nanoseconds since Unix epoch (1970-01-01T00:00:00Z
) and a time zone
Sourcepub fn now(time_zone_ref: TimeZoneRef<'_>) -> Result<Self, TzError>
Available on crate feature std
only.
pub fn now(time_zone_ref: TimeZoneRef<'_>) -> Result<Self, TzError>
std
only.Returns the current date time associated to the specified time zone
Sourcepub const fn project(
&self,
time_zone_ref: TimeZoneRef<'_>,
) -> Result<Self, ProjectDateTimeError>
pub const fn project( &self, time_zone_ref: TimeZoneRef<'_>, ) -> Result<Self, ProjectDateTimeError>
Project the date time into another time zone.
Leap seconds are not preserved.
Source§impl DateTime
impl DateTime
Sourcepub const fn nanoseconds(&self) -> u32
pub const fn nanoseconds(&self) -> u32
Returns nanoseconds in [0, 999_999_999]
Sourcepub const fn total_nanoseconds(&self) -> i128
pub const fn total_nanoseconds(&self) -> i128
Returns total nanoseconds since Unix epoch (1970-01-01T00:00:00Z
)
Sourcepub const fn local_time_type(&self) -> &LocalTimeType
pub const fn local_time_type(&self) -> &LocalTimeType
Returns local time type