Struct PlainDateTime

#[repr(C)]
pub struct PlainDateTime { /* private fields */ }

Combined date and time.

Implementations

impl PlainDateTime

const MIN: Self = _;

The smallest value that can be represented by PlainDateTime.

Depending on large-dates feature flag, value of this constant may vary.

  1. With large-dates disabled it is equal to -9999-01-01 00:00:00.0
  2. With large-dates enabled it is equal to -999999-01-01 00:00:00.0
# use time::PlainDateTime;
# use time_macros::datetime;
// Assuming `large-dates` feature is disabled.
assert_eq!(PlainDateTime::MIN, datetime!(-9999-01-01 0:00));
const MAX: Self = _;

The largest value that can be represented by PlainDateTime.

Depending on large-dates feature flag, value of this constant may vary.

  1. With large-dates disabled it is equal to 9999-12-31 23:59:59.999_999_999
  2. With large-dates enabled it is equal to 999999-12-31 23:59:59.999_999_999
# use time::PlainDateTime;
# use time_macros::datetime;
// Assuming `large-dates` feature is disabled.
assert_eq!(PlainDateTime::MAX, datetime!(+9999-12-31 23:59:59.999_999_999));
const fn new(date: Date, time: Time) -> Self

Create a new PlainDateTime from the provided Date and Time.

# use time::PlainDateTime;
# use time_macros::{date, datetime, time};
assert_eq!(
    PlainDateTime::new(date!(2019-01-01), time!(0:00)),
    datetime!(2019-01-01 0:00),
);
const fn date(self) -> Date

Get the Date component of the PlainDateTime.

# use time_macros::{date, datetime};
assert_eq!(datetime!(2019-01-01 0:00).date(), date!(2019-01-01));
const fn time(self) -> Time

Get the Time component of the PlainDateTime.

# use time_macros::{datetime, time};
assert_eq!(datetime!(2019-01-01 0:00).time(), time!(0:00));
const fn year(self) -> i32

Get the year of the date.

# use time_macros::datetime;
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);
const fn month(self) -> Month

Get the month of the date.

# use time::Month;
# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).month(), Month::January);
assert_eq!(datetime!(2019-12-31 0:00).month(), Month::December);
const fn day(self) -> u8

Get the day of the date.

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

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).day(), 1);
assert_eq!(datetime!(2019-12-31 0:00).day(), 31);
const fn ordinal(self) -> u16

Get the day of the year.

The returned value will always be in the range 1..=366 (1..=365 for common years).

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).ordinal(), 1);
assert_eq!(datetime!(2019-12-31 0:00).ordinal(), 365);
const fn iso_week(self) -> u8

Get the ISO week number.

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

# use time_macros::datetime;
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);
const fn sunday_based_week(self) -> u8

Get the week number where week 1 begins on the first Sunday.

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

# use time_macros::datetime;
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);
const fn monday_based_week(self) -> u8

Get the week number where week 1 begins on the first Monday.

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

# use time_macros::datetime;
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);
const fn to_calendar_date(self) -> (i32, Month, u8)

Get the year, month, and day.

# use time::Month;
# use time_macros::datetime;
assert_eq!(
    datetime!(2019-01-01 0:00).to_calendar_date(),
    (2019, Month::January, 1)
);
const fn to_ordinal_date(self) -> (i32, u16)

Get the year and ordinal day number.

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).to_ordinal_date(), (2019, 1));
const fn to_iso_week_date(self) -> (i32, u8, Weekday)

Get the ISO 8601 year, week number, and weekday.

# use time::Weekday::*;
# use time_macros::datetime;
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)
);
const fn weekday(self) -> Weekday

Get the weekday.

# use time::Weekday::*;
# use time_macros::datetime;
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);
const fn to_julian_day(self) -> i32

Get the Julian day for the date. The time is not taken into account for this calculation.

# use time_macros::datetime;
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);
const fn as_hms(self) -> (u8, u8, u8)

Get the clock hour, minute, and second.

# use time_macros::datetime;
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));
const fn as_hms_milli(self) -> (u8, u8, u8, u16)

Get the clock hour, minute, second, and millisecond.

# use time_macros::datetime;
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)
);
const fn as_hms_micro(self) -> (u8, u8, u8, u32)

Get the clock hour, minute, second, and microsecond.

# use time_macros::datetime;
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)
);
const fn as_hms_nano(self) -> (u8, u8, u8, u32)

Get the clock hour, minute, second, and nanosecond.

# use time_macros::datetime;
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)
);
const fn hour(self) -> u8

Get the clock hour.

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

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).hour(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).hour(), 23);
const fn minute(self) -> u8

Get the minute within the hour.

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

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).minute(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).minute(), 59);
const fn second(self) -> u8

Get the second within the minute.

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

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).second(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59).second(), 59);
const fn millisecond(self) -> u16

Get the milliseconds within the second.

The returned value will always be in the range 0..1_000.

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).millisecond(), 0);
assert_eq!(datetime!(2019-01-01 23:59:59.999).millisecond(), 999);
const fn microsecond(self) -> u32

Get the microseconds within the second.

The returned value will always be in the range 0..1_000_000.

# use time_macros::datetime;
assert_eq!(datetime!(2019-01-01 0:00).microsecond(), 0);
assert_eq!(
    datetime!(2019-01-01 23:59:59.999_999).microsecond(),
    999_999
);
const fn nanosecond(self) -> u32

Get the nanoseconds within the second.

The returned value will always be in the range 0..1_000_000_000.

# use time_macros::datetime;
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,
);
const fn assume_offset(self, offset: UtcOffset) -> OffsetDateTime

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

# use time_macros::{datetime, offset};
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,
);
const fn assume_utc(self) -> OffsetDateTime

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

# use time_macros::datetime;
assert_eq!(
    datetime!(2019-01-01 0:00).assume_utc().unix_timestamp(),
    1_546_300_800,
);

Note: You may want a UtcDateTime instead, which can be obtained with the PlainDateTime::as_utc method.

const fn as_utc(self) -> UtcDateTime

Assuming that the existing PlainDateTime represents a moment in UTC, return a UtcDateTime.

# use time_macros::datetime;
assert_eq!(
    datetime!(2019-01-01 0:00).as_utc().unix_timestamp(),
    1_546_300_800,
);
const fn checked_add(self, duration: SignedDuration) -> Option<Self>

Computes self + duration, returning None if an overflow occurred.

# use time::{Date, ext::NumericalDuration};
# use time_macros::datetime;
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))
);
const fn checked_sub(self, duration: SignedDuration) -> Option<Self>

Computes self - duration, returning None if an overflow occurred.

# use time::{Date, ext::NumericalDuration};
# use time_macros::datetime;
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))
);
const fn saturating_add(self, duration: SignedDuration) -> Self

Computes self + duration, saturating value on overflow.

# use time::{PlainDateTime, ext::NumericalDuration};
# use time_macros::datetime;
assert_eq!(
    PlainDateTime::MIN.saturating_add((-2).days()),
    PlainDateTime::MIN
);

assert_eq!(
    PlainDateTime::MAX.saturating_add(2.days()),
    PlainDateTime::MAX
);

assert_eq!(
    datetime!(2019-11-25 15:30).saturating_add(27.hours()),
    datetime!(2019-11-26 18:30)
);
const fn saturating_sub(self, duration: SignedDuration) -> Self

Computes self - duration, saturating value on overflow.

# use time::{PlainDateTime, ext::NumericalDuration};
# use time_macros::datetime;
assert_eq!(
    PlainDateTime::MIN.saturating_sub(2.days()),
    PlainDateTime::MIN
);

assert_eq!(
    PlainDateTime::MAX.saturating_sub((-2).days()),
    PlainDateTime::MAX
);

assert_eq!(
    datetime!(2019-11-25 15:30).saturating_sub(27.hours()),
    datetime!(2019-11-24 12:30)
);

impl PlainDateTime

const fn replace_time(self, time: Time) -> Self

Replace the time, preserving the date.

# use time_macros::{datetime, time};
assert_eq!(
    datetime!(2020-01-01 17:00).replace_time(time!(5:00)),
    datetime!(2020-01-01 5:00)
);
const fn replace_date(self, date: Date) -> Self

Replace the date, preserving the time.

# use time_macros::{datetime, date};
assert_eq!(
    datetime!(2020-01-01 12:00).replace_date(date!(2020-01-30)),
    datetime!(2020-01-30 12:00)
);
const fn replace_year(self, year: i32) -> Result<Self, ComponentRange>

Replace the year. The month and day will be unchanged.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 12:00).replace_year(2019),
    Ok(datetime!(2019-02-18 12:00))
);
assert!(datetime!(2022-02-18 12:00).replace_year(-1_000_000_000).is_err()); // -1_000_000_000 isn't a valid year
assert!(datetime!(2022-02-18 12:00).replace_year(1_000_000_000).is_err()); // 1_000_000_000 isn't a valid year
const fn replace_month(self, month: Month) -> Result<Self, ComponentRange>

Replace the month of the year.

# use time_macros::datetime;
# use time::Month;
assert_eq!(
    datetime!(2022-02-18 12:00).replace_month(Month::January),
    Ok(datetime!(2022-01-18 12:00))
);
assert!(datetime!(2022-01-30 12:00).replace_month(Month::February).is_err()); // 30 isn't a valid day in February
const fn replace_day(self, day: u8) -> Result<Self, ComponentRange>

Replace the day of the month.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 12:00).replace_day(1),
    Ok(datetime!(2022-02-01 12:00))
);
assert!(datetime!(2022-02-18 12:00).replace_day(0).is_err()); // 00 isn't a valid day
assert!(datetime!(2022-02-18 12:00).replace_day(30).is_err()); // 30 isn't a valid day in February
const fn replace_ordinal(self, ordinal: u16) -> Result<Self, ComponentRange>

Replace the day of the year.

# use time_macros::datetime;
assert_eq!(datetime!(2022-049 12:00).replace_ordinal(1), Ok(datetime!(2022-001 12:00)));
assert!(datetime!(2022-049 12:00).replace_ordinal(0).is_err()); // 0 isn't a valid ordinal
assert!(datetime!(2022-049 12:00).replace_ordinal(366).is_err()); // 2022 isn't a leap year
const fn truncate_to_day(self) -> Self

Truncate to the start of the day, setting the time to midnight.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_day(),
    datetime!(2022-02-18 0:00)
);
const fn replace_hour(self, hour: u8) -> Result<Self, ComponentRange>

Replace the clock hour.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_hour(7),
    Ok(datetime!(2022-02-18 07:02:03.004_005_006))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_hour(24).is_err()); // 24 isn't a valid hour
const fn truncate_to_hour(self) -> Self

Truncate to the hour, setting the minute, second, and subsecond components to zero.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_hour(),
    datetime!(2022-02-18 15:00)
);
const fn replace_minute(self, minute: u8) -> Result<Self, ComponentRange>

Replace the minutes within the hour.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_minute(7),
    Ok(datetime!(2022-02-18 01:07:03.004_005_006))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_minute(60).is_err()); // 60 isn't a valid minute
const fn truncate_to_minute(self) -> Self

Truncate to the minute, setting the second and subsecond components to zero.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_minute(),
    datetime!(2022-02-18 15:30)
);
const fn replace_second(self, second: u8) -> Result<Self, ComponentRange>

Replace the seconds within the minute.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_second(7),
    Ok(datetime!(2022-02-18 01:02:07.004_005_006))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_second(60).is_err()); // 60 isn't a valid second
const fn truncate_to_second(self) -> Self

Truncate to the second, setting the subsecond components to zero.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_second(),
    datetime!(2022-02-18 15:30:45)
);
const fn replace_millisecond(self, millisecond: u16) -> Result<Self, ComponentRange>

Replace the milliseconds within the second.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_millisecond(7),
    Ok(datetime!(2022-02-18 01:02:03.007))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_millisecond(1_000).is_err()); // 1_000 isn't a valid millisecond
const fn truncate_to_millisecond(self) -> Self

Truncate to the millisecond, setting the microsecond and nanosecond components to zero.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_millisecond(),
    datetime!(2022-02-18 15:30:45.123)
);
const fn replace_microsecond(self, microsecond: u32) -> Result<Self, ComponentRange>

Replace the microseconds within the second.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_microsecond(7_008),
    Ok(datetime!(2022-02-18 01:02:03.007_008))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_microsecond(1_000_000).is_err()); // 1_000_000 isn't a valid microsecond
const fn truncate_to_microsecond(self) -> Self

Truncate to the microsecond, setting the nanosecond component to zero.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_microsecond(),
    datetime!(2022-02-18 15:30:45.123_456)
);
const fn replace_nanosecond(self, nanosecond: u32) -> Result<Self, ComponentRange>

Replace the nanoseconds within the second.

# use time_macros::datetime;
assert_eq!(
    datetime!(2022-02-18 01:02:03.004_005_006).replace_nanosecond(7_008_009),
    Ok(datetime!(2022-02-18 01:02:03.007_008_009))
);
assert!(datetime!(2022-02-18 01:02:03.004_005_006).replace_nanosecond(1_000_000_000).is_err()); // 1_000_000_000 isn't a valid nanosecond

Trait Implementations

impl Add<Duration> for PlainDateTime

type Output = PlainDateTime;
fn add(self, duration: StdDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Add<SignedDuration> for PlainDateTime

type Output = PlainDateTime;
fn add(self, duration: SignedDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl AddAssign<Duration> for PlainDateTime

fn add_assign(&mut self, duration: StdDuration)

Panics

This may panic if an overflow occurs.

impl AddAssign<SignedDuration> for PlainDateTime

fn add_assign(&mut self, duration: SignedDuration)

Panics

This may panic if an overflow occurs.

impl Clone for PlainDateTime

fn clone(&self) -> PlainDateTime

impl Copy for PlainDateTime

impl Debug for PlainDateTime

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Display for PlainDateTime

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Eq for PlainDateTime

impl Hash for PlainDateTime

fn hash<H>(&self, state: &mut H)
where
    H: Hasher,

impl Ord for PlainDateTime

fn cmp(&self, other: &Self) -> Ordering

impl PartialEq for PlainDateTime

fn eq(&self, other: &Self) -> bool

impl PartialOrd for PlainDateTime

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

impl SmartDisplay for PlainDateTime

type Metadata = ();
fn metadata(&self, FormatterOptions) -> Metadata<'_, Self>
fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Sub for PlainDateTime

type Output = SignedDuration;
fn sub(self, rhs: Self) -> Self::Output

impl Sub<Duration> for PlainDateTime

type Output = PlainDateTime;
fn sub(self, duration: StdDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl Sub<SignedDuration> for PlainDateTime

type Output = PlainDateTime;
fn sub(self, duration: SignedDuration) -> Self::Output

Panics

This may panic if an overflow occurs.

impl SubAssign<Duration> for PlainDateTime

fn sub_assign(&mut self, duration: StdDuration)

Panics

This may panic if an overflow occurs.

impl SubAssign<SignedDuration> for PlainDateTime

fn sub_assign(&mut self, duration: SignedDuration)

Panics

This may panic if an overflow occurs.

Auto Trait Implementations

impl Freeze for PlainDateTime

impl RefUnwindSafe for PlainDateTime

impl Send for PlainDateTime

impl Sync for PlainDateTime

impl Unpin for PlainDateTime

impl UnsafeUnpin for PlainDateTime

impl UnwindSafe for PlainDateTime

Blanket Implementations

impl<T> Any for PlainDateTime where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for PlainDateTime where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for PlainDateTime where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for PlainDateTime where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for PlainDateTime

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for PlainDateTime where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T> ToString for PlainDateTime where T: Display + ?Sized,

fn to_string(&self) -> String

impl<T, U> Into<U> for PlainDateTime where U: From<T>,

fn into(self) -> U

Calls U::from(self).

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

impl<T, U> TryFrom<U> for PlainDateTime where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

impl<T, U> TryInto<U> for PlainDateTime where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>