logo
pub struct PrimitiveDateTime { /* private fields */ }
Expand description

Combined date and time.

Implementations

Create a new PrimitiveDateTime from the provided Date and Time.

assert_eq!(
    PrimitiveDateTime::new(date!(2019-01-01), time!(0:00)),
    date!(2019-01-01).midnight(),
);
👎 Deprecated since 0.2.7:

This method returns a value that assumes an offset of UTC.

Create a new PrimitiveDateTime with the current date and time (UTC).

assert!(PrimitiveDateTime::now().year() >= 2019);
👎 Deprecated since 0.2.7:

This method assumes an offset of UTC.

Midnight, 1 January, 1970 (UTC).

assert_eq!(
    PrimitiveDateTime::unix_epoch(),
    date!(1970-01-01).midnight()
);
👎 Deprecated since 0.2.7:

This method returns a value that assumes an offset of UTC.

Create a PrimitiveDateTime from the provided Unix timestamp.

assert_eq!(
    PrimitiveDateTime::from_unix_timestamp(0),
    PrimitiveDateTime::unix_epoch()
);
assert_eq!(
    PrimitiveDateTime::from_unix_timestamp(1_546_300_800),
    date!(2019-01-01).midnight(),
);
👎 Deprecated since 0.2.7:

This method assumes an offset of UTC.

Get the Unix timestamp representing the PrimitiveDateTime.

assert_eq!(PrimitiveDateTime::unix_epoch().timestamp(), 0);
assert_eq!(date!(2019-01-01).midnight().timestamp(), 1_546_300_800);

Get the Date component of the PrimitiveDateTime.

assert_eq!(
    date!(2019-01-01).midnight().date(),
    date!(2019-01-01)
);

Get the Time component of the PrimitiveDateTime.

assert_eq!(date!(2019-01-01).midnight().time(), time!(0:00));

Get the year of the date.

assert_eq!(date!(2019-01-01).midnight().year(), 2019);
assert_eq!(date!(2019-12-31).midnight().year(), 2019);
assert_eq!(date!(2020-01-01).midnight().year(), 2020);

This function is const fn when using rustc >= 1.46.

Get the month of the date. If fetching both the month and day, it is more efficient to use PrimitiveDateTime::month_day.

The returned value will always be in the range 1..=12.

assert_eq!(date!(2019-01-01).midnight().month(), 1);
assert_eq!(date!(2019-12-31).midnight().month(), 12);

This function is const fn when using rustc >= 1.46.

Get the day of the date. If fetching both the month and day, it is more efficient to use PrimitiveDateTime::month_day.

The returned value will always be in the range 1..=31.

assert_eq!(date!(2019-1-1).midnight().day(), 1);
assert_eq!(date!(2019-12-31).midnight().day(), 31);

This function is const fn when using rustc >= 1.46.

Get the month and day of the date. This is more efficient than fetching the components individually.

The month component will always be in the range 1..=12; the day component in 1..=31.

assert_eq!(date!(2019-01-01).midnight().month_day(), (1, 1));
assert_eq!(date!(2019-12-31).midnight().month_day(), (12, 31));

This function is const fn when using rustc >= 1.46.

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).midnight().ordinal(), 1);
assert_eq!(date!(2019-12-31).midnight().ordinal(), 365);

This function is const fn when using rustc >= 1.46.

Get the ISO 8601 year and week number.

assert_eq!(date!(2019-01-01).midnight().iso_year_week(), (2019, 1));
assert_eq!(date!(2019-10-04).midnight().iso_year_week(), (2019, 40));
assert_eq!(date!(2020-01-01).midnight().iso_year_week(), (2020, 1));
assert_eq!(date!(2020-12-31).midnight().iso_year_week(), (2020, 53));
assert_eq!(date!(2021-01-01).midnight().iso_year_week(), (2020, 53));

This function is const fn when using rustc >= 1.46.

Get the ISO week number.

The returned value will always be in the range 1..=53.

assert_eq!(date!(2019-01-01).midnight().week(), 1);
assert_eq!(date!(2019-10-04).midnight().week(), 40);
assert_eq!(date!(2020-01-01).midnight().week(), 1);
assert_eq!(date!(2020-12-31).midnight().week(), 53);
assert_eq!(date!(2021-01-01).midnight().week(), 53);

This function is const fn when using rustc >= 1.46.

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).midnight().sunday_based_week(), 0);
assert_eq!(date!(2020-01-01).midnight().sunday_based_week(), 0);
assert_eq!(date!(2020-12-31).midnight().sunday_based_week(), 52);
assert_eq!(date!(2021-01-01).midnight().sunday_based_week(), 0);

This function is const fn when using rustc >= 1.46.

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).midnight().monday_based_week(), 0);
assert_eq!(date!(2020-01-01).midnight().monday_based_week(), 0);
assert_eq!(date!(2020-12-31).midnight().monday_based_week(), 52);
assert_eq!(date!(2021-01-01).midnight().monday_based_week(), 0);

This function is const fn when using rustc >= 1.46.

Get the weekday.

This current uses Zeller’s congruence internally.

assert_eq!(date!(2019-01-01).midnight().weekday(), Tuesday);
assert_eq!(date!(2019-02-01).midnight().weekday(), Friday);
assert_eq!(date!(2019-03-01).midnight().weekday(), Friday);
assert_eq!(date!(2019-04-01).midnight().weekday(), Monday);
assert_eq!(date!(2019-05-01).midnight().weekday(), Wednesday);
assert_eq!(date!(2019-06-01).midnight().weekday(), Saturday);
assert_eq!(date!(2019-07-01).midnight().weekday(), Monday);
assert_eq!(date!(2019-08-01).midnight().weekday(), Thursday);
assert_eq!(date!(2019-09-01).midnight().weekday(), Sunday);
assert_eq!(date!(2019-10-01).midnight().weekday(), Tuesday);
assert_eq!(date!(2019-11-01).midnight().weekday(), Friday);
assert_eq!(date!(2019-12-01).midnight().weekday(), Sunday);

Get the clock hour.

The returned value will always be in the range 0..24.

assert_eq!(date!(2019-01-01).midnight().hour(), 0);
assert_eq!(date!(2019-01-01).with_time(time!(23:59:59)).hour(), 23);

Get the minute within the hour.

The returned value will always be in the range 0..60.

assert_eq!(date!(2019-01-01).midnight().minute(), 0);
assert_eq!(date!(2019-01-01).with_time(time!(23:59:59)).minute(), 59);

Get the second within the minute.

The returned value will always be in the range 0..60.

assert_eq!(date!(2019-01-01).midnight().second(), 0);
assert_eq!(date!(2019-01-01).with_time(time!(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!(date!(2019-01-01).midnight().millisecond(), 0);
assert_eq!(date!(2019-01-01).with_time(time!(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!(date!(2019-01-01).midnight().microsecond(), 0);
assert_eq!(date!(2019-01-01).with_time(time!(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!(date!(2019-01-01).midnight().nanosecond(), 0);
assert_eq!(
    date!(2019-01-01).with_time(time!(23:59:59.999_999_999)).nanosecond(),
    999_999_999,
);
👎 Deprecated since 0.2.7:

Due to behavior not clear by its name alone, it is preferred to use .assume_utc().to_offset(offset). This has the same behavior and can be used in const contexts.

Assuming that the existing PrimitiveDateTime represents a moment in the UTC, return an OffsetDateTime with the provided UtcOffset.

assert_eq!(
    date!(2019-01-01).midnight().using_offset(offset!(UTC)).unix_timestamp(),
    1_546_300_800,
);
assert_eq!(
    date!(2019-01-01).midnight().using_offset(offset!(-1)).unix_timestamp(),
    1_546_300_800,
);

This function is the same as calling .assume_utc().to_offset(offset).

Assuming that the existing PrimitiveDateTime represents a moment in the provided UtcOffset, return an OffsetDateTime.

assert_eq!(
    date!(2019-01-01).midnight().assume_offset(offset!(UTC)).unix_timestamp(),
    1_546_300_800,
);
assert_eq!(
    date!(2019-01-01).midnight().assume_offset(offset!(-1)).unix_timestamp(),
    1_546_304_400,
);

Assuming that the existing PrimitiveDateTime represents a moment in the UTC, return an OffsetDateTime.

assert_eq!(
    date!(2019-01-01).midnight().assume_utc().unix_timestamp(),
    1_546_300_800,
);

This function is the same as calling .assume_offset(offset!(UTC)), except it is usable in const contexts.

Methods that allow formatting the PrimitiveDateTime.

Format the PrimitiveDateTime using the provided string.

assert_eq!(
    date!(2019-01-02).midnight().format("%F %r"),
    "2019-01-02 12:00:00 am"
);

Format the PrimitiveDateTime using the provided string.

assert_eq!(
    date!(2019-01-02).midnight().lazy_format("%F %r").to_string(),
    "2019-01-02 12:00:00 am"
);

Attempt to parse a PrimitiveDateTime using the provided string.

assert_eq!(
    PrimitiveDateTime::parse("2019-01-02 00:00:00", "%F %T"),
    Ok(date!(2019-01-02).midnight()),
);
assert_eq!(
    PrimitiveDateTime::parse("2019-002 23:59:59", "%Y-%j %T"),
    Ok(date!(2019-002).with_time(time!(23:59:59)))
);
assert_eq!(
    PrimitiveDateTime::parse("2019-W01-3 12:00:00 pm", "%G-W%V-%u %r"),
    Ok(date!(2019-W01-3).with_time(time!(12:00))),
);

Trait Implementations

The resulting type after applying the + operator.

Performs the + operation. Read more

The resulting type after applying the + operator.

Performs the + operation. Read more

Performs the += operation. Read more

Performs the += operation. Read more

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

Deprecated since v0.2.7, as it assumes an offset of UTC.

Performs the conversion.

Deprecated since v0.2.7, as it returns a value that assumes an offset of UTC.

Performs the conversion.

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Deprecated since v0.2.7, as it assumes an offset of UTC.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Deprecated since v0.2.7, as it assumes an offset of UTC.

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Deprecated since v0.2.7, as it assumes an offset of UTC.

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

Deprecated since v0.2.7, as it assumes an offset of UTC.

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

The resulting type after applying the - operator.

Performs the - operation. Read more

The resulting type after applying the - operator.

Performs the - operation. Read more

The resulting type after applying the - operator.

Performs the - operation. Read more

Deprecated since v0.2.7, as it assumes an offset of UTC.

The resulting type after applying the - operator.

Performs the - operation. Read more

Deprecated since v0.2.7, as it assumes an offset of UTC.

The resulting type after applying the - operator.

Performs the - operation. Read more

Performs the -= operation. Read more

Performs the -= operation. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.