diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/datetime.rs | 31 | ||||
| -rw-r--r-- | src/lib.rs | 1 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/datetime.rs b/src/datetime.rs index 54685ec..c739d46 100644 --- a/src/datetime.rs +++ b/src/datetime.rs @@ -1,4 +1,4 @@ -use crate::{Date, Month, Time, Year}; +use crate::{timezone::UtcOffset, Date, Month, Time, TimeZone, Year}; #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] pub struct NaiveDateTime { @@ -6,6 +6,35 @@ pub struct NaiveDateTime { time: Time, } +#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] +pub struct DateTime<Tz: TimeZone> { + utc_datetime: NaiveDateTime, + timezone: Tz, +} + +impl<Tz: TimeZone> DateTime<Tz> { + // TODO unix epoch constant + + pub fn from_utc(utc_datetime: NaiveDateTime, timezone: Tz) -> Self { + Self { + utc_datetime, + timezone, + } + } + + pub fn offset(&self) -> UtcOffset { + self.timezone.utc_offset(self.utc_datetime) + } + + pub fn timezone(&self) -> &Tz { + &self.timezone + } + + pub fn naive_utc(&self) -> NaiveDateTime { + self.utc_datetime + } +} + impl NaiveDateTime { // TODO docs @@ -11,6 +11,7 @@ mod weekday; mod year; pub use date::Date; +pub use datetime::DateTime; pub use datetime::NaiveDateTime; pub use month::Month; pub use time::Time; |
