aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Harton <jamesotron@gmail.com>2013-01-31 13:59:09 +1300
committerJames Harton <jamesotron@gmail.com>2013-01-31 14:11:51 +1300
commit28ab79d7c579fa1d76ac868be02b38b02818428a (patch)
treebde101bf8eea9c5a8d5ddbd5886d30a619acffa0
parent162f7c1edcc45074aca482b4688a08e8ab41083f (diff)
downloadrails-28ab79d7c579fa1d76ac868be02b38b02818428a.tar.gz
rails-28ab79d7c579fa1d76ac868be02b38b02818428a.tar.bz2
rails-28ab79d7c579fa1d76ac868be02b38b02818428a.zip
Modify TimeWithZone#as_json to return 3DP of sub-second accuracy by default, since it's allowed by the spec and is very useful.
-rw-r--r--activesupport/CHANGELOG.md5
-rw-r--r--activesupport/lib/active_support/time_with_zone.rb2
-rw-r--r--activesupport/test/core_ext/time_with_zone_test.rb2
3 files changed, 7 insertions, 2 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md
index a2e6c62c3e..d4d03c7e40 100644
--- a/activesupport/CHANGELOG.md
+++ b/activesupport/CHANGELOG.md
@@ -1,5 +1,10 @@
## Rails 4.0.0 (unreleased) ##
+* Modify `TimeWithZone#as_json` to include 3 decimal places of sub-second accuracy
+ by default, which is optional as per the ISO8601 spec, but extremely useful. Also
+ the default behaviour of Date#toJSON() in recent versions of Chrome, Safari and
+ Firefox.
+
* Improve `String#squish` to handle Unicode whitespace. *Antoine Lyset*
* Standardise on `to_time` returning an instance of `Time` in the local system timezone
diff --git a/activesupport/lib/active_support/time_with_zone.rb b/activesupport/lib/active_support/time_with_zone.rb
index ff13efa990..0e6d12a186 100644
--- a/activesupport/lib/active_support/time_with_zone.rb
+++ b/activesupport/lib/active_support/time_with_zone.rb
@@ -154,7 +154,7 @@ module ActiveSupport
# # => "2005/02/01 15:15:10 +0000"
def as_json(options = nil)
if ActiveSupport::JSON::Encoding.use_standard_json_time_format
- xmlschema
+ xmlschema(3)
else
%(#{time.strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)})
end
diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb
index 18eca4cd8b..c2b3676aac 100644
--- a/activesupport/test/core_ext/time_with_zone_test.rb
+++ b/activesupport/test/core_ext/time_with_zone_test.rb
@@ -75,7 +75,7 @@ class TimeWithZoneTest < ActiveSupport::TestCase
def test_to_json_with_use_standard_json_time_format_config_set_to_true
old, ActiveSupport.use_standard_json_time_format = ActiveSupport.use_standard_json_time_format, true
- assert_equal "\"1999-12-31T19:00:00-05:00\"", ActiveSupport::JSON.encode(@twz)
+ assert_equal "\"1999-12-31T19:00:00.000-05:00\"", ActiveSupport::JSON.encode(@twz)
ensure
ActiveSupport.use_standard_json_time_format = old
end