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.
Makes a new DateTime
with given UTC datetime and offset.
The local datetime should be constructed via the TimeZone
trait.
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.)
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.)
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.
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.
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)));
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.
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.
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
Feeds this value into the given [Hasher
]. Read more
Feeds a slice of this type into the given [Hasher
]. Read more
Performs copy-assignment from source
. Read more
The resulting type after applying the +
operator.
Performs the +
operation.
The resulting type after applying the +
operator.
Performs the +
operation.
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
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
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
Serialize into a rfc3339 time string
See the serde
module for alternate
serializations.
This method returns an Ordering
between self
and other
. Read more
fn max(self, other: Self) -> Self | 1.21.0 [src] |
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self | 1.21.0 [src] |
Compares and returns the minimum of two values. Read more
This method tests for self
and other
values to be equal, and is used by ==
. Read more
This method tests for !=
.
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.
The resulting type after applying the -
operator.
Performs the -
operation.
The resulting type after applying the -
operator.
Performs the -
operation.
The resulting type after applying the -
operator.
Performs the -
operation.
Formats the value using the given formatter. Read more
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
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
The associated error which can be returned from parsing.
Parses a string s
to return a value of this type. Read more
The associated error which can be returned from parsing.
Parses a string s
to return a value of this type. Read more
The associated error which can be returned from parsing.
Parses a string s
to return a value of this type. Read more
Formats the value using the given formatter. Read more