From fca514b8da1ecadf9df299f1cb7b6950fb700be7 Mon Sep 17 00:00:00 2001 From: Eric Davies Date: Thu, 21 Dec 2017 13:07:48 -0600 Subject: [PATCH] Allow constructing a FixedTimeZone from Dates.UTC and allow passing it to ZonedDateTime --- src/conversions.jl | 2 ++ src/types.jl | 4 ++++ test/conversions.jl | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/src/conversions.jl b/src/conversions.jl index c855797b7..158399859 100644 --- a/src/conversions.jl +++ b/src/conversions.jl @@ -3,6 +3,8 @@ import Compat.Dates: now, julian2datetime, unix2datetime # UTC is an abstract type defined in Dates, for some reason const utc_tz = FixedTimeZone("UTC") +FixedTimeZone(::UTC) = utc_tz + """ DateTime(::ZonedDateTime) -> DateTime diff --git a/src/types.jl b/src/types.jl index 89c61e118..02e400fb5 100644 --- a/src/types.jl +++ b/src/types.jl @@ -172,6 +172,10 @@ function ZonedDateTime(dt::DateTime, tz::FixedTimeZone; from_utc::Bool=false) return ZonedDateTime(utc_dt, tz, tz) end +function ZonedDateTime(dt::DateTime, tz::UTC; from_utc::Bool=false) + return ZonedDateTime(dt, FixedTimeZone(tz); from_utc=from_utc) +end + """ ZonedDateTime(dt::DateTime, tz::VariableTimeZone, occurrence::Integer) -> ZonedDateTime diff --git a/test/conversions.jl b/test/conversions.jl index 1b75ba53a..65e5e66a1 100644 --- a/test/conversions.jl +++ b/test/conversions.jl @@ -3,6 +3,11 @@ import Compat.Dates utc = FixedTimeZone("UTC") warsaw = resolve("Europe/Warsaw", tzdata["europe"]...) +# Converting from the stdlib UTC +@test FixedTimeZone(UTC()) == utc +dt = DateTime(2015, 1, 1, 0) +@test ZonedDateTime(dt, FixedTimeZone(UTC())) == ZonedDateTime(dt, utc) + # Converting a ZonedDateTime into a DateTime dt = DateTime(2015, 1, 1, 0) zdt = ZonedDateTime(dt, warsaw)