@@ -163,4 +163,36 @@ defmodule DateTimeTest do
163
163
assert DateTime . compare ( datetime1 , datetime2 ) == :lt
164
164
assert DateTime . compare ( datetime2 , datetime1 ) == :gt
165
165
end
166
+
167
+ test "from_iso8601/1 with tz offsets" do
168
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00+01:00" ) |> elem ( 1 ) ==
169
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
170
+ hour: 13 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
171
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
172
+
173
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00-04:00" ) |> elem ( 1 ) ==
174
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
175
+ hour: 18 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
176
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
177
+
178
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00+0100" ) |> elem ( 1 ) ==
179
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
180
+ hour: 13 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
181
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
182
+
183
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00-0400" ) |> elem ( 1 ) ==
184
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
185
+ hour: 18 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
186
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
187
+
188
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00+01" ) |> elem ( 1 ) ==
189
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
190
+ hour: 13 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
191
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
192
+
193
+ assert DateTime . from_iso8601 ( "2017-06-02T14:00:00-04" ) |> elem ( 1 ) ==
194
+ % DateTime { year: 2017 , month: 6 , day: 2 , zone_abbr: "UTC" ,
195
+ hour: 18 , minute: 0 , second: 0 , microsecond: { 0 , 0 } ,
196
+ utc_offset: 0 , std_offset: 0 , time_zone: "Etc/UTC" }
197
+ end
166
198
end
0 commit comments