Struct time::Date [−][src]
pub struct Date { /* fields omitted */ }
Date in the proleptic Gregorian calendar.
By default, years between ±9999 inclusive are representable. This can be expanded to ±999,999
inclusive by enabling the large-dates
crate feature. Doing so has performance implications
and introduces some ambiguities when parsing.
Implementations
impl Date
[src]
pub const MIN: Self
[src]
The minimum valid Date
.
The value of this may vary depending on the feature flags enabled.
pub const MAX: Self
[src]
The maximum valid Date
.
The value of this may vary depending on the feature flags enabled.
pub const fn from_calendar_date(
year: i32,
month: u8,
day: u8
) -> Result<Self, ComponentRange>
[src]
year: i32,
month: u8,
day: u8
) -> Result<Self, ComponentRange>
Attempt to create a Date
from the year, month, and day.
assert!(Date::from_calendar_date(2019, 1, 1).is_ok()); assert!(Date::from_calendar_date(2019, 12, 31).is_ok());Run
assert!(Date::from_calendar_date(2019, 2, 29).is_err()); // 2019 isn't a leap year.Run
pub const fn from_ordinal_date(
year: i32,
ordinal: u16
) -> Result<Self, ComponentRange>
[src]
year: i32,
ordinal: u16
) -> Result<Self, ComponentRange>
Attempt to create a Date
from the year and ordinal day number.
assert!(Date::from_ordinal_date(2019, 1).is_ok()); assert!(Date::from_ordinal_date(2019, 365).is_ok());Run
assert!(Date::from_ordinal_date(2019, 366).is_err()); // 2019 isn't a leap year.Run
pub const fn from_iso_week_date(
year: i32,
week: u8,
weekday: Weekday
) -> Result<Self, ComponentRange>
[src]
year: i32,
week: u8,
weekday: Weekday
) -> Result<Self, ComponentRange>
Attempt to create a Date
from the ISO year, week, and weekday.
assert!(Date::from_iso_week_date(2019, 1, Monday).is_ok()); assert!(Date::from_iso_week_date(2019, 1, Tuesday).is_ok()); assert!(Date::from_iso_week_date(2020, 53, Friday).is_ok());Run
assert!(Date::from_iso_week_date(2019, 53, Monday).is_err()); // 2019 doesn't have 53 weeks.Run
pub const fn from_julian_day(julian_day: i32) -> Result<Self, ComponentRange>
[src]
Create a Date
from the Julian day.
The algorithm to perform this conversion is derived from one provided by Peter Baum; it is freely available here.
assert_eq!(Date::from_julian_day(0), Ok(date!("-4713-11-24"))); assert_eq!(Date::from_julian_day(2_451_545), Ok(date!("2000-01-01"))); assert_eq!(Date::from_julian_day(2_458_485), Ok(date!("2019-01-01"))); assert_eq!(Date::from_julian_day(2_458_849), Ok(date!("2019-12-31")));Run
pub const fn year(self) -> i32
[src]
Get the year of the date.
assert_eq!(date!("2019-01-01").year(), 2019); assert_eq!(date!("2019-12-31").year(), 2019); assert_eq!(date!("2020-01-01").year(), 2020);Run
pub const fn month(self) -> u8
[src]
Get the month.
The returned value will always be in the range 1..=12
.
assert_eq!(date!("2019-01-01").month(), 1); assert_eq!(date!("2019-12-31").month(), 12);Run
pub const fn day(self) -> u8
[src]
Get the day of the month.
The returned value will always be in the range 1..=31
.
assert_eq!(date!("2019-01-01").day(), 1); assert_eq!(date!("2019-12-31").day(), 31);Run
pub const fn ordinal(self) -> u16
[src]
Get the day of the year.
The returned value will always be in the range 1..=366
(1..=365
for common years).
assert_eq!(date!("2019-01-01").ordinal(), 1); assert_eq!(date!("2019-12-31").ordinal(), 365);Run
pub const fn iso_week(self) -> u8
[src]
Get the ISO week number.
The returned value will always be in the range 1..=53
.
assert_eq!(date!("2019-01-01").iso_week(), 1); assert_eq!(date!("2019-10-04").iso_week(), 40); assert_eq!(date!("2020-01-01").iso_week(), 1); assert_eq!(date!("2020-12-31").iso_week(), 53); assert_eq!(date!("2021-01-01").iso_week(), 53);Run
pub const fn sunday_based_week(self) -> u8
[src]
Get the week number where week 1 begins on the first Sunday.
The returned value will always be in the range 0..=53
.
assert_eq!(date!("2019-01-01").sunday_based_week(), 0); assert_eq!(date!("2020-01-01").sunday_based_week(), 0); assert_eq!(date!("2020-12-31").sunday_based_week(), 52); assert_eq!(date!("2021-01-01").sunday_based_week(), 0);Run
pub const fn monday_based_week(self) -> u8
[src]
Get the week number where week 1 begins on the first Monday.
The returned value will always be in the range 0..=53
.
assert_eq!(date!("2019-01-01").monday_based_week(), 0); assert_eq!(date!("2020-01-01").monday_based_week(), 0); assert_eq!(date!("2020-12-31").monday_based_week(), 52); assert_eq!(date!("2021-01-01").monday_based_week(), 0);Run
pub const fn to_calendar_date(self) -> (i32, u8, u8)
[src]
Get the year, month, and day.
assert_eq!(date!("2019-01-01").to_calendar_date(), (2019, 1, 1));Run
pub const fn to_ordinal_date(self) -> (i32, u16)
[src]
Get the year and ordinal day number.
assert_eq!(date!("2019-01-01").to_ordinal_date(), (2019, 1));Run
pub const fn to_iso_week_date(self) -> (i32, u8, Weekday)
[src]
Get the ISO 8601 year, week number, and weekday.
assert_eq!(date!("2019-01-01").to_iso_week_date(), (2019, 1, Tuesday)); assert_eq!(date!("2019-10-04").to_iso_week_date(), (2019, 40, Friday)); assert_eq!(date!("2020-01-01").to_iso_week_date(), (2020, 1, Wednesday)); assert_eq!(date!("2020-12-31").to_iso_week_date(), (2020, 53, Thursday)); assert_eq!(date!("2021-01-01").to_iso_week_date(), (2020, 53, Friday));Run
pub const fn weekday(self) -> Weekday
[src]
Get the weekday.
assert_eq!(date!("2019-01-01").weekday(), Tuesday); assert_eq!(date!("2019-02-01").weekday(), Friday); assert_eq!(date!("2019-03-01").weekday(), Friday); assert_eq!(date!("2019-04-01").weekday(), Monday); assert_eq!(date!("2019-05-01").weekday(), Wednesday); assert_eq!(date!("2019-06-01").weekday(), Saturday); assert_eq!(date!("2019-07-01").weekday(), Monday); assert_eq!(date!("2019-08-01").weekday(), Thursday); assert_eq!(date!("2019-09-01").weekday(), Sunday); assert_eq!(date!("2019-10-01").weekday(), Tuesday); assert_eq!(date!("2019-11-01").weekday(), Friday); assert_eq!(date!("2019-12-01").weekday(), Sunday);Run
pub const fn next_day(self) -> Option<Self>
[src]
Get the next calendar date.
assert_eq!(date!("2019-01-01").next_day(), Some(date!("2019-01-02"))); assert_eq!(date!("2019-01-31").next_day(), Some(date!("2019-02-01"))); assert_eq!(date!("2019-12-31").next_day(), Some(date!("2020-01-01"))); assert_eq!(Date::MAX.next_day(), None);Run
pub const fn previous_day(self) -> Option<Self>
[src]
Get the previous calendar date.
assert_eq!( date!("2019-01-02").previous_day(), Some(date!("2019-01-01")) ); assert_eq!( date!("2019-02-01").previous_day(), Some(date!("2019-01-31")) ); assert_eq!( date!("2020-01-01").previous_day(), Some(date!("2019-12-31")) ); assert_eq!(Date::MIN.previous_day(), None);Run
pub const fn to_julian_day(self) -> i32
[src]
Get the Julian day for the date.
The algorithm to perform this conversion is derived from one provided by Peter Baum; it is freely available here.
assert_eq!(date!("-4713-11-24").to_julian_day(), 0); assert_eq!(date!("2000-01-01").to_julian_day(), 2_451_545); assert_eq!(date!("2019-01-01").to_julian_day(), 2_458_485); assert_eq!(date!("2019-12-31").to_julian_day(), 2_458_849);Run
impl Date
[src]
Methods to add a Time
component, resulting in a PrimitiveDateTime
.
pub const fn midnight(self) -> PrimitiveDateTime
[src]
Create a PrimitiveDateTime
using the existing date. The Time
component will be set
to midnight.
assert_eq!(date!("1970-01-01").midnight(), datetime!("1970-01-01 0:00"));Run
pub const fn with_time(self, time: Time) -> PrimitiveDateTime
[src]
Create a PrimitiveDateTime
using the existing date and the provided Time
.
assert_eq!( date!("1970-01-01").with_time(time!("0:00")), datetime!("1970-01-01 0:00"), );Run
pub const fn with_hms(
self,
hour: u8,
minute: u8,
second: u8
) -> Result<PrimitiveDateTime, ComponentRange>
[src]
self,
hour: u8,
minute: u8,
second: u8
) -> Result<PrimitiveDateTime, ComponentRange>
Attempt to create a PrimitiveDateTime
using the existing date and the provided time.
assert!(date!("1970-01-01").with_hms(0, 0, 0).is_ok()); assert!(date!("1970-01-01").with_hms(24, 0, 0).is_err());Run
pub const fn with_hms_milli(
self,
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<PrimitiveDateTime, ComponentRange>
[src]
self,
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<PrimitiveDateTime, ComponentRange>
Attempt to create a PrimitiveDateTime
using the existing date and the provided time.
assert!(date!("1970-01-01").with_hms_milli(0, 0, 0, 0).is_ok()); assert!(date!("1970-01-01").with_hms_milli(24, 0, 0, 0).is_err());Run
pub const fn with_hms_micro(
self,
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<PrimitiveDateTime, ComponentRange>
[src]
self,
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<PrimitiveDateTime, ComponentRange>
Attempt to create a PrimitiveDateTime
using the existing date and the provided time.
assert!(date!("1970-01-01").with_hms_micro(0, 0, 0, 0).is_ok()); assert!(date!("1970-01-01").with_hms_micro(24, 0, 0, 0).is_err());Run
pub const fn with_hms_nano(
self,
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<PrimitiveDateTime, ComponentRange>
[src]
self,
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<PrimitiveDateTime, ComponentRange>
Attempt to create a PrimitiveDateTime
using the existing date and the provided time.
assert!(date!("1970-01-01").with_hms_nano(0, 0, 0, 0).is_ok()); assert!(date!("1970-01-01").with_hms_nano(24, 0, 0, 0).is_err());Run
impl Date
[src]
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
[src]
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
formatting
only.Format the Date
using the provided format description. The formatted value will be output
to the provided writer. The format description will typically be parsed by using
format_description::parse
.
pub fn format(self, format: &impl Formattable) -> Result<String, Format>
[src]
formatting
only.Format the Date
using the provided format description. The format description will
typically be parsed by using
format_description::parse
.
let format = format_description::parse("[year]-[month]-[day]")?; assert_eq!(date!("2020-01-02").format(&format)?, "2020-01-02");Run
impl Date
[src]
pub fn parse(input: &str, description: &impl Parsable) -> Result<Self, Parse>
[src]
parsing
only.Parse a Date
from the input using the provided format description. The format description
will typically be parsed by using
format_description::parse
.
let format = format_description::parse("[year]-[month]-[day]")?; assert_eq!(Date::parse("2020-01-02", &format)?, date!("2020-01-02"));Run
Trait Implementations
impl Add<Duration> for Date
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, duration: Duration) -> Self::Output
[src]
impl Add<Duration> for Date
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, duration: StdDuration) -> Self::Output
[src]
impl<T> AddAssign<T> for Date where
Self: Add<T, Output = Self>,
[src]
Self: Add<T, Output = Self>,
fn add_assign(&mut self, rhs: T)
[src]
impl Arbitrary for Date
[src]
quickcheck
only.impl Clone for Date
[src]
impl Copy for Date
[src]
impl Debug for Date
[src]
impl<'a> Deserialize<'a> for Date
[src]
serde
only.fn deserialize<D: Deserializer<'a>>(deserializer: D) -> Result<Self, D::Error>
[src]
impl Display for Date
[src]
formatting
only.impl Eq for Date
[src]
impl Hash for Date
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Ord for Date
[src]
fn cmp(&self, other: &Date) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl PartialEq<Date> for Date
[src]
impl PartialOrd<Date> for Date
[src]
fn partial_cmp(&self, other: &Date) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl Serialize for Date
[src]
serde
only.impl StructuralEq for Date
[src]
impl StructuralPartialEq for Date
[src]
impl Sub<Date> for Date
[src]
type Output = Duration
The resulting type after applying the -
operator.
fn sub(self, other: Self) -> Self::Output
[src]
impl Sub<Duration> for Date
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, duration: Duration) -> Self::Output
[src]
impl Sub<Duration> for Date
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, duration: StdDuration) -> Self::Output
[src]
impl<T> SubAssign<T> for Date where
Self: Sub<T, Output = Self>,
[src]
Self: Sub<T, Output = Self>,
fn sub_assign(&mut self, rhs: T)
[src]
impl TryFrom<Parsed> for Date
[src]
parsing
only.Auto Trait Implementations
impl RefUnwindSafe for Date
impl Send for Date
impl Sync for Date
impl Unpin for Date
impl UnwindSafe for Date
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,