pub enum DateTimeRange {
Naive {
start: Option<NaiveDateTime>,
end: Option<NaiveDateTime>,
},
TimeZone {
start: Option<DateTime<FixedOffset>>,
end: Option<DateTime<FixedOffset>>,
},
}
Expand description
Represents a date-time range, that can either be time-zone naive or time-zone aware. It is stored as two Option<chrono::DateTime<FixedOffset>>
or
two Option<chrono::NaiveDateTime>
values.
None means no upper or no lower bound for range is present.
§Example
use chrono::{NaiveDate, NaiveTime, NaiveDateTime, DateTime, FixedOffset, TimeZone};
use dicom_core::value::DateTimeRange;
let offset = FixedOffset::west_opt(3600).unwrap();
let dtr = DateTimeRange::from_start_to_end_with_time_zone(
offset.from_local_datetime(&NaiveDateTime::new(
NaiveDate::from_ymd_opt(2000, 5, 6).unwrap(),
NaiveTime::from_hms_opt(15, 0, 0).unwrap()
)).unwrap(),
offset.from_local_datetime(&NaiveDateTime::new(
NaiveDate::from_ymd_opt(2000, 5, 6).unwrap(),
NaiveTime::from_hms_opt(16, 30, 0).unwrap()
)).unwrap()
)?;
assert!(dtr.start().is_some());
assert!(dtr.end().is_some());
Variants§
Naive
DateTime range without time-zone information
TimeZone
DateTime range with time-zone information
Implementations§
Source§impl DateTimeRange
impl DateTimeRange
Sourcepub fn from_start_to_end_with_time_zone(
start: DateTime<FixedOffset>,
end: DateTime<FixedOffset>,
) -> Result<DateTimeRange, Error>
pub fn from_start_to_end_with_time_zone( start: DateTime<FixedOffset>, end: DateTime<FixedOffset>, ) -> Result<DateTimeRange, Error>
Constructs a new time-zone aware DateTimeRange
from two chrono::DateTime<FixedOffset>
values
monotonically ordered in time.
Sourcepub fn from_start_to_end(
start: NaiveDateTime,
end: NaiveDateTime,
) -> Result<DateTimeRange, Error>
pub fn from_start_to_end( start: NaiveDateTime, end: NaiveDateTime, ) -> Result<DateTimeRange, Error>
Constructs a new time-zone naive DateTimeRange
from two chrono::NaiveDateTime
values
monotonically ordered in time.
Sourcepub fn from_start_with_time_zone(start: DateTime<FixedOffset>) -> DateTimeRange
pub fn from_start_with_time_zone(start: DateTime<FixedOffset>) -> DateTimeRange
Constructs a new time-zone aware DateTimeRange
beginning with a chrono::DateTime<FixedOffset>
value
and no upper limit.
Sourcepub fn from_start(start: NaiveDateTime) -> DateTimeRange
pub fn from_start(start: NaiveDateTime) -> DateTimeRange
Constructs a new time-zone naive DateTimeRange
beginning with a chrono::NaiveDateTime
value
and no upper limit.
Sourcepub fn from_end_with_time_zone(end: DateTime<FixedOffset>) -> DateTimeRange
pub fn from_end_with_time_zone(end: DateTime<FixedOffset>) -> DateTimeRange
Constructs a new time-zone aware DateTimeRange
with no lower limit, ending with a chrono::DateTime<FixedOffset>
value.
Sourcepub fn from_end(end: NaiveDateTime) -> DateTimeRange
pub fn from_end(end: NaiveDateTime) -> DateTimeRange
Constructs a new time-zone naive DateTimeRange
with no lower limit, ending with a chrono::NaiveDateTime
value.
Sourcepub fn start(&self) -> Option<PreciseDateTime>
pub fn start(&self) -> Option<PreciseDateTime>
Returns the lower bound of the range, if present.
Sourcepub fn end(&self) -> Option<PreciseDateTime>
pub fn end(&self) -> Option<PreciseDateTime>
Returns the upper bound of the range, if present.
Sourcepub fn from_date_and_time_range(
dr: DateRange,
tr: TimeRange,
) -> Result<DateTimeRange, Error>
pub fn from_date_and_time_range( dr: DateRange, tr: TimeRange, ) -> Result<DateTimeRange, Error>
For combined datetime range matching,
this method constructs a DateTimeRange
from a DateRange
and a TimeRange
.
As ‘DateRange’ and ‘TimeRange’ are always time-zone unaware, the resulting DateTimeRange
will always be time-zone unaware.
Trait Implementations§
Source§impl Clone for DateTimeRange
impl Clone for DateTimeRange
Source§fn clone(&self) -> DateTimeRange
fn clone(&self) -> DateTimeRange
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for DateTimeRange
impl Debug for DateTimeRange
Source§impl Hash for DateTimeRange
impl Hash for DateTimeRange
Source§impl PartialEq for DateTimeRange
impl PartialEq for DateTimeRange
impl Copy for DateTimeRange
impl Eq for DateTimeRange
impl StructuralPartialEq for DateTimeRange
Auto Trait Implementations§
impl Freeze for DateTimeRange
impl RefUnwindSafe for DateTimeRange
impl Send for DateTimeRange
impl Sync for DateTimeRange
impl Unpin for DateTimeRange
impl UnwindSafe for DateTimeRange
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more