[][src]Struct task_hookrs::date::Date

pub struct Date(_);

Date is a NaiveDateTime-Wrapper object to be able to implement foreign traits on it

Methods from Deref<Target = NaiveDateTime>

pub fn date(&self) -> NaiveDate[src]

Retrieves a date component.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(2016, 7, 8).and_hms(9, 10, 11);
assert_eq!(dt.date(), NaiveDate::from_ymd(2016, 7, 8));

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

Retrieves a time component.

Example

use chrono::{NaiveDate, NaiveTime};

let dt = NaiveDate::from_ymd(2016, 7, 8).and_hms(9, 10, 11);
assert_eq!(dt.time(), NaiveTime::from_hms(9, 10, 11));

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

Returns the number of non-leap seconds since the midnight on January 1, 1970.

Note that this does not account for the timezone! The true "UNIX timestamp" would count seconds since the midnight UTC on the epoch.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(1970, 1, 1).and_hms_milli(0, 0, 1, 980);
assert_eq!(dt.timestamp(), 1);

let dt = NaiveDate::from_ymd(2001, 9, 9).and_hms(1, 46, 40);
assert_eq!(dt.timestamp(), 1_000_000_000);

let dt = NaiveDate::from_ymd(1969, 12, 31).and_hms(23, 59, 59);
assert_eq!(dt.timestamp(), -1);

let dt = NaiveDate::from_ymd(-1, 1, 1).and_hms(0, 0, 0);
assert_eq!(dt.timestamp(), -62198755200);

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

Returns the number of non-leap milliseconds since midnight on January 1, 1970.

Note that this does not account for the timezone! The true "UNIX timestamp" would count seconds since the midnight UTC on the epoch.

Note also 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::NaiveDate;

let dt = NaiveDate::from_ymd(1970, 1, 1).and_hms_milli(0, 0, 1, 444);
assert_eq!(dt.timestamp_millis(), 1_444);

let dt = NaiveDate::from_ymd(2001, 9, 9).and_hms_milli(1, 46, 40, 555);
assert_eq!(dt.timestamp_millis(), 1_000_000_000_555);

let dt = NaiveDate::from_ymd(1969, 12, 31).and_hms_milli(23, 59, 59, 100);
assert_eq!(dt.timestamp_millis(), -900);

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

Returns the number of non-leap nanoseconds since midnight on January 1, 1970.

Note that this does not account for the timezone! The true "UNIX timestamp" would count seconds since the midnight UTC on the epoch.

Note also 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::NaiveDate;

let dt = NaiveDate::from_ymd(1970, 1, 1).and_hms_nano(0, 0, 1, 444);
assert_eq!(dt.timestamp_nanos(), 1_000_000_444);

let dt = NaiveDate::from_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 whole non-leap second.

The return value ranges from 0 to 999, or for leap seconds, to 1,999.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(2016, 7, 8).and_hms_nano(9, 10, 11, 123_456_789);
assert_eq!(dt.timestamp_subsec_millis(), 123);

let dt = NaiveDate::from_ymd(2015, 7, 1).and_hms_nano(8, 59, 59, 1_234_567_890);
assert_eq!(dt.timestamp_subsec_millis(), 1_234);

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

Returns the number of microseconds since the last whole non-leap second.

The return value ranges from 0 to 999,999, or for leap seconds, to 1,999,999.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(2016, 7, 8).and_hms_nano(9, 10, 11, 123_456_789);
assert_eq!(dt.timestamp_subsec_micros(), 123_456);

let dt = NaiveDate::from_ymd(2015, 7, 1).and_hms_nano(8, 59, 59, 1_234_567_890);
assert_eq!(dt.timestamp_subsec_micros(), 1_234_567);

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

Returns the number of nanoseconds since the last whole non-leap second.

The return value ranges from 0 to 999,999,999, or for leap seconds, to 1,999,999,999.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(2016, 7, 8).and_hms_nano(9, 10, 11, 123_456_789);
assert_eq!(dt.timestamp_subsec_nanos(), 123_456_789);

let dt = NaiveDate::from_ymd(2015, 7, 1).and_hms_nano(8, 59, 59, 1_234_567_890);
assert_eq!(dt.timestamp_subsec_nanos(), 1_234_567_890);

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. Otherwise it is same to the ordinary format method.

The Iterator of items should be Cloneable, since the resulting DelayedFormat value may be formatted multiple times.

Example

use chrono::NaiveDate;
use chrono::format::strftime::StrftimeItems;

let fmt = StrftimeItems::new("%Y-%m-%d %H:%M:%S");
let dt = NaiveDate::from_ymd(2015, 9, 5).and_hms(23, 56, 4);
assert_eq!(dt.format_with_items(fmt.clone()).to_string(), "2015-09-05 23:56:04");
assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(),    "2015-09-05 23:56:04");

The resulting DelayedFormat can be formatted directly via the Display trait.

assert_eq!(format!("{}", dt.format_with_items(fmt)), "2015-09-05 23:56:04");

pub fn format(&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.

This returns a DelayedFormat, which gets converted to a string only when actual formatting happens. You may use the to_string method to get a String, or just feed it into print! and other formatting macros. (In this way it avoids the redundant memory allocation.)

A wrong format string does not issue an error immediately. Rather, converting or formatting the DelayedFormat fails. You are recommended to immediately use DelayedFormat for this reason.

Example

use chrono::NaiveDate;

let dt = NaiveDate::from_ymd(2015, 9, 5).and_hms(23, 56, 4);
assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(), "2015-09-05 23:56:04");
assert_eq!(dt.format("around %l %p on %b %-d").to_string(), "around 11 PM on Sep 5");

The resulting DelayedFormat can be formatted directly via the Display trait.

assert_eq!(format!("{}", dt.format("%Y-%m-%d %H:%M:%S")), "2015-09-05 23:56:04");
assert_eq!(format!("{}", dt.format("around %l %p on %b %-d")), "around 11 PM on Sep 5");

Trait Implementations

impl From<NaiveDateTime> for Date[src]

impl Clone for Date[src]

impl Eq for Date[src]

impl PartialEq<Date> for Date[src]

impl Debug for Date[src]

impl Deref for Date[src]

type Target = NaiveDateTime

The resulting type after dereferencing.

impl DerefMut for Date[src]

impl Hash for Date[src]

impl StructuralPartialEq for Date[src]

impl StructuralEq for Date[src]

impl Serialize for Date[src]

impl<'de> Deserialize<'de> for Date[src]

Auto Trait Implementations

impl Send for Date

impl Sync for Date

impl Unpin for Date

impl UnwindSafe for Date

impl RefUnwindSafe for Date

Blanket Implementations

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

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

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

type Owned = T

The resulting type after obtaining ownership.

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> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<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]