[][src]Struct chrono::DateTime

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]

pub fn from_utc(datetime: NaiveDateTime, offset: Tz::Offset) -> 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);

pub fn date(&self) -> Date<Tz>[src]

Retrieves a date component.

pub fn time(&self) -> NaiveTime[src]

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

pub fn timestamp(&self) -> i64[src]

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

pub fn timestamp_millis(&self) -> i64[src]

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);

pub fn timestamp_nanos(&self) -> i64[src]

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);

pub fn timestamp_subsec_millis(&self) -> u32[src]

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

pub fn timestamp_subsec_micros(&self) -> u32[src]

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

pub fn timestamp_subsec_nanos(&self) -> u32[src]

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

pub fn offset(&self) -> &Tz::Offset[src]

Retrieves an associated offset from UTC.

pub fn timezone(&self) -> Tz[src]

Retrieves an associated time zone.

pub fn with_timezone<Tz2: TimeZone>(&self, tz: &Tz2) -> DateTime<Tz2>[src]

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

pub fn checked_add_signed(self, rhs: OldDuration) -> Option<DateTime<Tz>>[src]

Adds given Duration to the current date and time.

Returns None when it will result in overflow.

pub fn checked_sub_signed(self, rhs: OldDuration) -> Option<DateTime<Tz>>[src]

Subtracts given Duration from the current date and time.

Returns None when it will result in overflow.

pub fn signed_duration_since<Tz2: TimeZone>(
    self,
    rhs: DateTime<Tz2>
) -> OldDuration
[src]

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

pub fn naive_utc(&self) -> NaiveDateTime[src]

Returns a view to the naive UTC datetime.

pub fn naive_local(&self) -> NaiveDateTime[src]

Returns a view to the naive local datetime.

impl DateTime<FixedOffset>[src]

pub fn parse_from_rfc2822(s: &str) -> ParseResult<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.

pub fn parse_from_rfc3339(s: &str) -> ParseResult<DateTime<FixedOffset>>[src]

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.

pub fn parse_from_str(s: &str, fmt: &str) -> ParseResult<DateTime<FixedOffset>>[src]

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]

pub fn to_rfc2822(&self) -> String[src]

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

pub fn to_rfc3339(&self) -> String[src]

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

pub fn to_rfc3339_opts(&self, secform: SecondsFormat, use_z: bool) -> String[src]

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");

pub fn format_with_items<'a, I>(&self, items: I) -> DelayedFormat<I> where
    I: Iterator<Item = Item<'a>> + Clone
[src]

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

pub fn format<'a>(&self, fmt: &'a str) -> DelayedFormat<StrftimeItems<'a>>[src]

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> Datelike for DateTime<Tz>[src]

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

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

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

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

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

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

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

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

Convert a DateTime<Utc> instance into a DateTime<FixedOffset> instance.

fn from(src: DateTime<Utc>) -> Self[src]

Convert this DateTime<Utc> instance into a DateTime<FixedOffset> instance.

Conversion is done via DateTime::with_timezone. Note that the converted value returned by this will be created with a fixed timezone offset of 0.

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

Convert a DateTime<Utc> instance into a DateTime<Local> instance.

fn from(src: DateTime<Utc>) -> Self[src]

Convert this DateTime<Utc> instance into a DateTime<Local> instance.

Conversion is performed via DateTime::with_timezone, accounting for the difference in timezones.

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

Convert a DateTime<FixedOffset> instance into a DateTime<Utc> instance.

fn from(src: DateTime<FixedOffset>) -> Self[src]

Convert this DateTime<FixedOffset> instance into a DateTime<Utc> instance.

Conversion is performed via DateTime::with_timezone, accounting for the timezone difference.

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

Convert a DateTime<FixedOffset> instance into a DateTime<Local> instance.

fn from(src: DateTime<FixedOffset>) -> Self[src]

Convert this DateTime<FixedOffset> instance into a DateTime<Local> instance.

Conversion is performed via DateTime::with_timezone. Returns the equivalent value in local time.

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

Convert a DateTime<Local> instance into a DateTime<Utc> instance.

fn from(src: DateTime<Local>) -> Self[src]

Convert this DateTime<Local> instance into a DateTime<Utc> instance.

Conversion is performed via DateTime::with_timezone, accounting for the difference in timezones.

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

Convert a DateTime<Local> instance into a DateTime<FixedOffset> instance.

fn from(src: DateTime<Local>) -> Self[src]

Convert this DateTime<Local> instance into a DateTime<FixedOffset> instance.

Conversion is performed via DateTime::with_timezone. Note that the converted value returned by this will be created with a fixed timezone offset of 0.

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

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

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

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

fn from(obj: TsSeconds<Tz>) -> DateTime<Tz>[src]

Pull the inner DateTime out

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

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

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

type Output = DateTime<Tz>

The resulting type after applying the + operator.

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

type Output = DateTime<Tz>

The resulting type after applying the + operator.

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

type Output = DateTime<Tz>

The resulting type after applying the - operator.

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

type Output = DateTime<Tz>

The resulting type after applying the - operator.

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

type Output = OldDuration

The resulting type after applying the - operator.

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

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

impl FromStr for DateTime<FixedOffset>[src]

type Err = ParseError

The associated error which can be returned from parsing.

impl FromStr for DateTime<Utc>[src]

type Err = ParseError

The associated error which can be returned from parsing.

impl FromStr for DateTime<Local>[src]

type Err = ParseError

The associated error which can be returned from parsing.

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

impl Decodable for DateTime<FixedOffset>[src]

impl Decodable for DateTime<Utc>[src]

impl Decodable for DateTime<Local>[src]

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

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer
[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.

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.

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.

Auto Trait Implementations

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

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

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

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

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]