@@ -163,4 +163,36 @@ defmodule DateTimeTest do
163163 assert DateTime . compare ( datetime1 , datetime2 ) == :lt
164164 assert DateTime . compare ( datetime2 , datetime1 ) == :gt
165165 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
166198end
0 commit comments