Struct chrono::DateTime[][src]

pub struct DateTime<Tz: TimeZone> { /* fields omitted */ }

ISO 8601 combined date and time with time zone.

There are some constructors implemented here (the from_* methods), but the general-purpose constructors are all via the methods on the TimeZone implementations.

Methods

impl<Tz: TimeZone> DateTime<Tz>
[src]

Makes a new DateTime with given UTC datetime and offset. The local datetime should be constructed via the TimeZone trait.

Example

use chrono::{DateTime, TimeZone, NaiveDateTime, Utc};

let dt = DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp(61, 0), Utc);
assert_eq!(Utc.timestamp(61, 0), dt);

Retrieves a date component.

Retrieves a time component. Unlike date, this is not associated to the time zone.

Returns the number of non-leap seconds since January 1, 1970 0:00:00 UTC (aka "UNIX timestamp").

Returns the number of non-leap-milliseconds since January 1, 1970 UTC

Note that this does reduce the number of years that can be represented from ~584 Billion to ~584 Million. (If this is a problem, please file an issue to let me know what domain needs millisecond precision over billions of years, I'm curious.)

Example

use chrono::Utc;
use chrono::TimeZone;

let dt = Utc.ymd(1970, 1, 1).and_hms_milli(0, 0, 1, 444);
assert_eq!(dt.timestamp_millis(), 1_444);

let dt = Utc.ymd(2001, 9, 9).and_hms_milli(1, 46, 40, 555);
assert_eq!(dt.timestamp_millis(), 1_000_000_000_555);

Returns the number of non-leap-nanoseconds since January 1, 1970 UTC

Note that this does reduce the number of years that can be represented from ~584 Billion to ~584. (If this is a problem, please file an issue to let me know what domain needs nanosecond precision over millenia, I'm curious.)

Example

use chrono::Utc;
use chrono::TimeZone;

let dt = Utc.ymd(1970, 1, 1).and_hms_nano(0, 0, 1, 444);
assert_eq!(dt.timestamp_nanos(), 1_000_000_444);

let dt = Utc.ymd(2001, 9, 9).and_hms_nano(1, 46, 40, 555);
assert_eq!(dt.timestamp_nanos(), 1_000_000_000_000_000_555);

Returns the number of milliseconds since the last second boundary

warning: in event of a leap second, this may exceed 999

note: this is not the number of milliseconds since January 1, 1970 0:00:00 UTC

Returns the number of microseconds since the last second boundary

warning: in event of a leap second, this may exceed 999_999

note: this is not the number of microseconds since January 1, 1970 0:00:00 UTC

Returns the number of nanoseconds since the last second boundary

warning: in event of a leap second, this may exceed 999_999_999

note: this is not the number of nanoseconds since January 1, 1970 0:00:00 UTC

Retrieves an associated offset from UTC.

Retrieves an associated time zone.

Changes the associated time zone. This does not change the actual DateTime (but will change the string representation).

Adds given Duration to the current date and time.

Returns None when it will result in overflow.

Subtracts given Duration from the current date and time.

Returns None when it will result in overflow.

Subtracts another DateTime from the current date and time. This does not overflow or underflow at all.

Returns a view to the naive UTC datetime.

Returns a view to the naive local datetime.

impl DateTime<FixedOffset>
[src]

Parses an RFC 2822 date and time string such as Tue, 1 Jul 2003 10:52:37 +0200, then returns a new DateTime with a parsed FixedOffset.

Parses an RFC 3339 and ISO 8601 date and time string such as 1996-12-19T16:39:57-08:00, then returns a new DateTime with a parsed FixedOffset.

Why isn't this named parse_from_iso8601? That's because ISO 8601 allows some freedom over the syntax and RFC 3339 exercises that freedom to rigidly define a fixed format.

Parses a string with the specified format string and returns a new DateTime with a parsed FixedOffset. See the format::strftime module on the supported escape sequences.

See also Offset::datetime_from_str which gives a local DateTime on specific time zone.

Note that this method requires a timezone in the string. See NaiveDateTime::parse_from_str for a version that does not require a timezone in the to-be-parsed str.

Example

use chrono::{DateTime, FixedOffset, TimeZone};

let dt = DateTime::parse_from_str(
    "1983 Apr 13 12:09:14.274 +0000", "%Y %b %d %H:%M:%S%.3f %z");
assert_eq!(dt, Ok(FixedOffset::east(0).ymd(1983, 4, 13).and_hms_milli(12, 9, 14, 274)));

impl<Tz: TimeZone> DateTime<Tz> where
    Tz::Offset: Display
[src]

Returns an RFC 2822 date and time string such as Tue, 1 Jul 2003 10:52:37 +0200.

Returns an RFC 3339 and ISO 8601 date and time string such as 1996-12-19T16:39:57-08:00.

Return an RFC 3339 and ISO 8601 date and time string with subseconds formatted as per a SecondsFormat. If passed use_z true and the timezone is UTC (offset 0), use 'Z', as per Fixed::TimezoneOffsetColonZ. If passed use_z false, use Fixed::TimezoneOffsetColon.

Examples

let dt = Utc.ymd(2018, 1, 26).and_hms_micro(18, 30, 9, 453_829);
assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Millis, false),
           "2018-01-26T18:30:09.453+00:00");
assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Millis, true),
           "2018-01-26T18:30:09.453Z");
assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Secs, true),
           "2018-01-26T18:30:09Z");

let pst = FixedOffset::east(8 * 60 * 60);
let dt = pst.ymd(2018, 1, 26).and_hms_micro(10, 30, 9, 453_829);
assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Secs, true),
           "2018-01-26T10:30:09+08:00");

Formats the combined date and time with the specified formatting items.

Formats the combined date and time with the specified format string. See the format::strftime module on the supported escape sequences.

Trait Implementations

impl<Tz: TimeZone> Add<FixedOffset> for DateTime<Tz>
[src]

The resulting type after applying the + operator.

Performs the + operation.

impl<Tz: TimeZone> Sub<FixedOffset> for DateTime<Tz>
[src]

The resulting type after applying the - operator.

Performs the - operation.

impl<Tz: TimeZone> Encodable for DateTime<Tz>
[src]

Serialize a value using an Encoder.

impl Decodable for DateTime<FixedOffset>
[src]

Deserialize a value using a Decoder.

impl Decodable for DateTime<Utc>
[src]

Deserialize a value using a Decoder.

impl<Tz: TimeZone> From<TsSeconds<Tz>> for DateTime<Tz>
[src]

Pull the inner DateTime out

impl Decodable for DateTime<Local>
[src]

Deserialize a value using a Decoder.

impl<Tz: TimeZone> Serialize for DateTime<Tz>
[src]

Serialize into a rfc3339 time string

See the serde module for alternate serializations.

impl<'de> Deserialize<'de> for DateTime<FixedOffset>
[src]

Deserialize a value that optionally includes a timezone offset in its string representation

The value to be deserialized must be an rfc3339 string.

See the serde module for alternate deserialization formats.

Deserialize this value from the given Serde deserializer. Read more

impl<'de> Deserialize<'de> for DateTime<Utc>
[src]

Deserialize into a UTC value

The value to be deserialized must be an rfc3339 string.

See the serde module for alternate deserialization formats.

Deserialize this value from the given Serde deserializer. Read more

impl<'de> Deserialize<'de> for DateTime<Local>
[src]

Deserialize a value that includes no timezone in its string representation

The value to be deserialized must be an rfc3339 string.

See the serde module for alternate serialization formats.

Deserialize this value from the given Serde deserializer. Read more

impl<Tz: Clone + TimeZone> Clone for DateTime<Tz> where
    Tz::Offset: Clone
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<Tz: TimeZone> Datelike for DateTime<Tz>
[src]

Returns the year number in the calendar date.

Returns the month number starting from 1. Read more

Returns the month number starting from 0. Read more

Returns the day of month starting from 1. Read more

Returns the day of month starting from 0. Read more

Returns the day of year starting from 1. Read more

Returns the day of year starting from 0. Read more

Returns the day of week.

Returns the ISO week.

Makes a new value with the year number changed. Read more

Makes a new value with the month number (starting from 1) changed. Read more

Makes a new value with the month number (starting from 0) changed. Read more

Makes a new value with the day of month (starting from 1) changed. Read more

Makes a new value with the day of month (starting from 0) changed. Read more

Makes a new value with the day of year (starting from 1) changed. Read more

Makes a new value with the day of year (starting from 0) changed. Read more

Returns the absolute year number starting from 1 with a boolean flag, which is false when the year predates the epoch (BCE/BC) and true otherwise (CE/AD). Read more

Returns the number of days since January 1, Year 1 (aka Day 1) in the proleptic Gregorian calendar. Read more

impl<Tz: TimeZone> Timelike for DateTime<Tz>
[src]

Returns the hour number from 0 to 23.

Returns the minute number from 0 to 59.

Returns the second number from 0 to 59.

Returns the number of nanoseconds since the whole non-leap second. The range from 1,000,000,000 to 1,999,999,999 represents the leap second. Read more

Makes a new value with the hour number changed. Read more

Makes a new value with the minute number changed. Read more

Makes a new value with the second number changed. Read more

Makes a new value with nanoseconds since the whole non-leap second changed. Read more

Returns the hour number from 1 to 12 with a boolean flag, which is false for AM and true for PM. Read more

Returns the number of non-leap seconds past the last midnight.

impl<Tz: TimeZone> Copy for DateTime<Tz> where
    <Tz as TimeZone>::Offset: Copy
[src]

impl<Tz: TimeZone> Send for DateTime<Tz> where
    <Tz as TimeZone>::Offset: Send
[src]

impl<Tz: TimeZone, Tz2: TimeZone> PartialEq<DateTime<Tz2>> for DateTime<Tz>
[src]

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

This method tests for !=.

impl<Tz: TimeZone> Eq for DateTime<Tz>
[src]

impl<Tz: TimeZone> PartialOrd for DateTime<Tz>
[src]

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

impl<Tz: TimeZone> Ord for DateTime<Tz>
[src]

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

impl<Tz: TimeZone> Hash for DateTime<Tz>
[src]

Feeds this value into the given [Hasher]. Read more

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

impl<Tz: TimeZone> Add<OldDuration> for DateTime<Tz>
[src]

The resulting type after applying the + operator.

Performs the + operation.

impl<Tz: TimeZone> Sub<OldDuration> for DateTime<Tz>
[src]

The resulting type after applying the - operator.

Performs the - operation.

impl<Tz: TimeZone> Sub<DateTime<Tz>> for DateTime<Tz>
[src]

The resulting type after applying the - operator.

Performs the - operation.

impl<Tz: TimeZone> Debug for DateTime<Tz>
[src]

Formats the value using the given formatter. Read more

impl<Tz: TimeZone> Display for DateTime<Tz> where
    Tz::Offset: Display
[src]

Formats the value using the given formatter. Read more

impl FromStr for DateTime<FixedOffset>
[src]

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

impl FromStr for DateTime<Utc>
[src]

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

impl FromStr for DateTime<Local>
[src]

The associated error which can be returned from parsing.

Parses a string s to return a value of this type. Read more

impl From<SystemTime> for DateTime<Utc>
[src]

Performs the conversion.

impl From<SystemTime> for DateTime<Local>
[src]

Performs the conversion.

impl<Tz: TimeZone> From<DateTime<Tz>> for SystemTime
[src]

Performs the conversion.

Auto Trait Implementations

impl<Tz> Sync for DateTime<Tz> where
    <Tz as TimeZone>::Offset: Sync