aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/CHANGELOG.md')
-rw-r--r--activesupport/CHANGELOG.md31
1 files changed, 31 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index 6ca227f40a..86d7626d0c 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,3 +1,34 @@
+* Add `ActiveSupport::TimeZone.iso8601` parsing method
+
+ Previously there was no way to get a ISO 8601 timestamp into a specific
+ timezone without either using `parse` or chaining methods. The new method
+ allows parsing directly into the timezone, e.g:
+
+ >> Time.zone = "Hawaii"
+ => "Hawaii"
+ >> Time.zone.iso8601("1999-12-31T14:00:00Z")
+ => Fri, 31 Dec 1999 14:00:00 HST -10:00
+
+ If the timestamp is a ISO 8601 date (YYYY-MM-DD) then the time is set
+ to midnight, e.g:
+
+ >> Time.zone = "Hawaii"
+ => "Hawaii"
+ >> Time.zone.iso8601("1999-12-31")
+ => Fri, 31 Dec 1999 00:00:00 HST -10:00
+
+ This new method has stricter semantics than the current `parse` method
+ and will raise an `ArgumentError` instead of returning nil, e.g:
+
+ >> Time.zone = "Hawaii"
+ => "Hawaii"
+ >> Time.zone.iso8601("foobar")
+ ArgumentError: invalid date
+ >> Time.zone.parse("foobar")
+ => nil
+
+ *Andrew White*
+
* Deprecate implicit coercion of `ActiveSupport::Duration`
Currently `ActiveSupport::Duration` implicitly converts to a seconds