Struct actix_web::cookie::time::PrimitiveDateTime [−][src]
pub struct PrimitiveDateTime { /* fields omitted */ }Expand description
Combined date and time.
Implementations
The smallest value that can be represented by PrimitiveDateTime.
Depending on large-dates feature flag, value of this constant may vary.
- With
large-datesdisabled it is equal to-9999 - 01 - 01 00:00:00.0 - With
large-datesenabled it is equal to-999999 - 01 - 01 00:00:00.0
// Assuming `large-dates` feature is enabled.
assert_eq!(PrimitiveDateTime::MIN, datetime!(-999999 - 01 - 01 0:00));The largest value that can be represented by PrimitiveDateTime.
Depending on large-dates feature flag, value of this constant may vary.
- With
large-datesdisabled it is equal to9999 - 12 - 31 23:59:59.999_999_999 - With
large-datesenabled it is equal to999999 - 12 - 31 23:59:59.999_999_999
// Assuming `large-dates` feature is enabled.
assert_eq!(PrimitiveDateTime::MAX, datetime!(+999999 - 12 - 31 23:59:59.999_999_999));Get the Date component of the PrimitiveDateTime.
assert_eq!(datetime!(2019-01-01 0:00).date(), date!(2019-01-01));Get the Time component of the PrimitiveDateTime.
assert_eq!(datetime!(2019-01-01 0:00).time(), time!(0:00));Get the year of the date.
assert_eq!(datetime!(2019-01-01 0:00).year(), 2019);
assert_eq!(datetime!(2019-12-31 0:00).year(), 2019);
assert_eq!(datetime!(2020-01-01 0:00).year(), 2020);Get the month of the date.
assert_eq!(datetime!(2019-01-01 0:00).month(), Month::January);
assert_eq!(datetime!(2019-12-31 0:00).month(), Month::December);Get the day of the date.
The returned value will always be in the range 1..=31.
assert_eq!(datetime!(2019-01-01 0:00).day(), 1);
assert_eq!(datetime!(2019-12-31 0:00).day(), 31);Get the day of the year.
The returned value will always be in the range 1..=366 (1..=365 for common years).
assert_eq!(datetime!(2019-01-01 0:00).ordinal(), 1);
assert_eq!(datetime!(2019-12-31 0:00).ordinal(), 365);Get the ISO week number.
The returned value will always be in the range 1..=53.
assert_eq!(datetime!(2019-01-01 0:00).iso_week(), 1);
assert_eq!(datetime!(2019-10-04 0:00).iso_week(), 40);
assert_eq!(datetime!(2020-01-01 0:00).iso_week(), 1);
assert_eq!(datetime!(2020-12-31 0:00).iso_week(), 53);
assert_eq!(datetime!(2021-01-01 0:00).iso_week(), 53);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!(datetime!(2019-01-01 0:00).sunday_based_week(), 0);
assert_eq!(datetime!(2020-01-01 0:00).sunday_based_week(), 0);
assert_eq!(datetime!(2020-12-31 0:00).sunday_based_week(), 52);
assert_eq!(datetime!(2021-01-01 0:00).sunday_based_week(), 0);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!(datetime!(2019-01-01 0:00).monday_based_week(), 0);
assert_eq!(datetime!(2020-01-01 0:00).monday_based_week(), 0);
assert_eq!(datetime!(2020-12-31 0:00).monday_based_week(), 52);
assert_eq!(datetime!(2021-01-01 0:00).monday_based_week(), 0);Get the year, month, and day.
assert_eq!(
datetime!(2019-01-01 0:00).to_calendar_date(),
(2019, Month::January, 1)
);Get the year and ordinal day number.
assert_eq!(datetime!(2019-01-01 0:00).to_ordinal_date(), (2019, 1));Get the ISO 8601 year, week number, and weekday.
assert_eq!(
datetime!(2019-01-01 0:00).to_iso_week_date(),
(2019, 1, Tuesday)
);
assert_eq!(
datetime!(2019-10-04 0:00).to_iso_week_date(),
(2019, 40, Friday)
);
assert_eq!(
datetime!(2020-01-01 0:00).to_iso_week_date(),
(2020, 1, Wednesday)
);
assert_eq!(
datetime!(2020-12-31 0:00).to_iso_week_date(),
(2020, 53, Thursday)
);
assert_eq!(
datetime!(2021-01-01 0:00).to_iso_week_date(),
(2020, 53, Friday)
);Get the weekday.
assert_eq!(datetime!(2019-01-01 0:00).weekday(), Tuesday);
assert_eq!(datetime!(2019-02-01 0:00).weekday(), Friday);
assert_eq!(datetime!(2019-03-01 0:00).weekday(), Friday);
assert_eq!(datetime!(2019-04-01 0:00).weekday(), Monday);
assert_eq!(datetime!(2019-05-01 0:00).weekday(), Wednesday);
assert_eq!(datetime!(2019-06-01 0:00).weekday(), Saturday);
assert_eq!(datetime!(2019-07-01 0:00).weekday(), Monday);
assert_eq!(datetime!(2019-08-01 0:00).weekday(), Thursday);
assert_eq!(datetime!(2019-09-01 0:00).weekday(), Sunday);
assert_eq!(datetime!(2019-10-01 0:00).weekday(), Tuesday);
assert_eq!(datetime!(2019-11-01 0:00).weekday(), Friday);
assert_eq!(datetime!(2019-12-01 0:00).weekday(), Sunday);Get the Julian day for the date. The time is not taken into account for this calculation.
The algorithm to perform this conversion is derived from one provided by Peter Baum; it is freely available here.
assert_eq!(datetime!(-4713-11-24 0:00).to_julian_day(), 0);
assert_eq!(datetime!(2000-01-01 0:00).to_julian_day(), 2_451_545);
assert_eq!(datetime!(2019-01-01 0:00).to_julian_day(), 2_458_485);
assert_eq!(datetime!(2019-12-31 0:00).to_julian_day(), 2_458_849);Get the clock hour, minute, and second.
assert_eq!(datetime!(2020-01-01 0:00:00).as_hms(), (0, 0, 0));
assert_eq!(datetime!(2020-01-01 23:59:59).as_hms(), (23, 59, 59));Get the clock hour, minute, second, and millisecond.
assert_eq!(datetime!(2020-01-01 0:00:00).as_hms_milli(), (0, 0, 0, 0));
assert_eq!(
datetime!(2020-01-01 23:59:59.999).as_hms_milli(),
(23, 59, 59, 999)
);Get the clock hour, minute, second, and microsecond.
assert_eq!(datetime!(2020-01-01 0:00:00).as_hms_micro(), (0, 0, 0, 0));
assert_eq!(
datetime!(2020-01-01 23:59:59.999_999).as_hms_micro(),
(23, 59, 59, 999_999)
);Get the clock hour, minute, second, and nanosecond.
assert_eq!(datetime!(2020-01-01 0:00:00).as_hms_nano(), (0, 0, 0, 0));
assert_eq!(
datetime!(2020-01-01 23:59:59.999_999_999).as_hms_nano(),
(23, 59, 59, 999_999_999)
);Get the clock hour.
The returned value will always be in the range 0..24.
assert_eq!(datetime!(2019-01-01 0:00).hour(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).hour(), 23);Get the minute within the hour.
The returned value will always be in the range 0..60.
assert_eq!(datetime!(2019-01-01 0:00).minute(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).minute(), 59);Get the second within the minute.
The returned value will always be in the range 0..60.
assert_eq!(datetime!(2019-01-01 0:00).second(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).second(), 59);Get the milliseconds within the second.
The returned value will always be in the range 0..1_000.
assert_eq!(datetime!(2019-01-01 0:00).millisecond(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59.999).millisecond(), 999);Get the microseconds within the second.
The returned value will always be in the range 0..1_000_000.
assert_eq!(datetime!(2019-01-01 0:00).microsecond(), 0);
assert_eq!(
datetime!(2019-01-01 23:59:59.999_999).microsecond(),
999_999
);Get the nanoseconds within the second.
The returned value will always be in the range 0..1_000_000_000.
assert_eq!(datetime!(2019-01-01 0:00).nanosecond(), 0);
assert_eq!(
datetime!(2019-01-01 23:59:59.999_999_999).nanosecond(),
999_999_999,
);Assuming that the existing PrimitiveDateTime represents a moment in the provided
UtcOffset, return an OffsetDateTime.
assert_eq!(
datetime!(2019-01-01 0:00)
.assume_offset(offset!(UTC))
.unix_timestamp(),
1_546_300_800,
);
assert_eq!(
datetime!(2019-01-01 0:00)
.assume_offset(offset!(-1))
.unix_timestamp(),
1_546_304_400,
);Assuming that the existing PrimitiveDateTime represents a moment in UTC, return an
OffsetDateTime.
assert_eq!(
datetime!(2019-01-01 0:00).assume_utc().unix_timestamp(),
1_546_300_800,
);Computes self + duration, returning None if an overflow occurred.
let datetime = Date::MIN.midnight();
assert_eq!(datetime.checked_add((-2).days()), None);
let datetime = Date::MAX.midnight();
assert_eq!(datetime.checked_add(1.days()), None);
assert_eq!(
datetime!(2019 - 11 - 25 15:30).checked_add(27.hours()),
Some(datetime!(2019 - 11 - 26 18:30))
);Computes self - duration, returning None if an overflow occurred.
let datetime = Date::MIN.midnight();
assert_eq!(datetime.checked_sub(2.days()), None);
let datetime = Date::MAX.midnight();
assert_eq!(datetime.checked_sub((-1).days()), None);
assert_eq!(
datetime!(2019 - 11 - 25 15:30).checked_sub(27.hours()),
Some(datetime!(2019 - 11 - 24 12:30))
);Computes self + duration, saturating value on overflow.
assert_eq!(
PrimitiveDateTime::MIN.saturating_add((-2).days()),
PrimitiveDateTime::MIN
);
assert_eq!(
PrimitiveDateTime::MAX.saturating_add(2.days()),
PrimitiveDateTime::MAX
);
assert_eq!(
datetime!(2019 - 11 - 25 15:30).saturating_add(27.hours()),
datetime!(2019 - 11 - 26 18:30)
);Computes self - duration, saturating value on overflow.
assert_eq!(
PrimitiveDateTime::MIN.saturating_sub(2.days()),
PrimitiveDateTime::MIN
);
assert_eq!(
PrimitiveDateTime::MAX.saturating_sub((-2).days()),
PrimitiveDateTime::MAX
);
assert_eq!(
datetime!(2019 - 11 - 25 15:30).saturating_sub(27.hours()),
datetime!(2019 - 11 - 24 12:30)
);Methods that replace part of the PrimitiveDateTime.
Replace the time, preserving the date.
assert_eq!(
datetime!(2020-01-01 17:00).replace_time(time!(5:00)),
datetime!(2020-01-01 5:00)
);Replace the date, preserving the time.
assert_eq!(
datetime!(2020-01-01 12:00).replace_date(date!(2020-01-30)),
datetime!(2020-01-30 12:00)
);pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
Format the PrimitiveDateTime using the provided format
description.
Format the PrimitiveDateTime using the provided format
description.
let format = format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second]")?;
assert_eq!(
datetime!(2020-01-02 03:04:05).format(&format)?,
"2020-01-02 03:04:05"
);Parse a PrimitiveDateTime from the input using the provided format
description.
let format = format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second]")?;
assert_eq!(
PrimitiveDateTime::parse("2020-01-02 03:04:05", &format)?,
datetime!(2020-01-02 03:04:05)
);Trait Implementations
type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
The resulting type after applying the + operator.
type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
The resulting type after applying the + operator.
Performs the += operation. Read more
Performs the += operation. Read more
This method tests for self and other values to be equal, and is used
by ==. Read more
This method tests for !=.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
The resulting type after applying the - operator.
type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
The resulting type after applying the - operator.
pub fn sub(
self,
rhs: PrimitiveDateTime
) -> <PrimitiveDateTime as Sub<PrimitiveDateTime>>::Output
pub fn sub(
self,
rhs: PrimitiveDateTime
) -> <PrimitiveDateTime as Sub<PrimitiveDateTime>>::Output
Performs the - operation. Read more
Performs the -= operation. Read more
Performs the -= operation. Read more
type Error = TryFromParsed
type Error = TryFromParsed
The type returned in the event of a conversion error.
pub fn try_from(
parsed: Parsed
) -> Result<PrimitiveDateTime, <PrimitiveDateTime as TryFrom<Parsed>>::Error>
pub fn try_from(
parsed: Parsed
) -> Result<PrimitiveDateTime, <PrimitiveDateTime as TryFrom<Parsed>>::Error>
Performs the conversion.
Auto Trait Implementations
impl RefUnwindSafe for PrimitiveDateTime
impl Send for PrimitiveDateTime
impl Sync for PrimitiveDateTime
impl Unpin for PrimitiveDateTime
impl UnwindSafe for PrimitiveDateTime
Blanket Implementations
Mutably borrows from an owned value. Read more
Compare self to key and return true if they are equal.
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more
