feat(objects): chrono feature

This commit is contained in:
PoiScript 2019-04-23 15:48:13 +08:00
parent ffbefaa3b4
commit cd7e03accb
2 changed files with 36 additions and 2 deletions

View file

@ -13,8 +13,9 @@ keywords = ["orgmode","emacs","parser"]
travis-ci = { repository = "PoiScript/orgize" }
[dependencies]
bytecount = "0.5.1"
jetscii = "0.4.3"
bytecount = "0.5"
chrono = { version = "0.4", optional = true }
jetscii = "0.4"
memchr = "2"
[dev-dependencies]

View file

@ -8,6 +8,39 @@ pub struct Datetime<'a> {
pub dayname: &'a str,
}
#[cfg(feature = "chrono")]
mod chrono {
use super::Datetime;
use chrono::*;
impl<'a> Datetime<'a> {
pub fn naive_date(&self) -> NaiveDate {
let (y, m, d) = self.date;
NaiveDate::from_ymd(y.into(), m.into(), d.into())
}
pub fn naive_time(&self) -> NaiveTime {
if let Some((h, m)) = self.time {
NaiveTime::from_hms(h.into(), m.into(), 0)
} else {
NaiveTime::from_hms(0, 0, 0)
}
}
pub fn naive_date_time(&self) -> NaiveDateTime {
NaiveDateTime::new(self.naive_date(), self.naive_time())
}
pub fn date_time<Tz: TimeZone>(&self, offset: Tz::Offset) -> DateTime<Tz> {
DateTime::from_utc(self.naive_date_time(), offset)
}
pub fn date<Tz: TimeZone>(&self, offset: Tz::Offset) -> Date<Tz> {
Date::from_utc(self.naive_date(), offset)
}
}
}
#[cfg_attr(test, derive(PartialEq))]
#[derive(Debug, Clone, Copy)]
pub enum RepeaterType {