summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/datetime.rs31
-rw-r--r--src/lib.rs1
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
diff --git a/src/lib.rs b/src/lib.rs
index 44e3ad0..ebc132d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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;