Skip to content
Browse files

Time#to_json: don't convert to utc before encoding. References #175

  • Loading branch information...
1 parent 0f33344 commit be85868987675a158fd4111393b9161296431728 @gbuesing gbuesing committed May 18, 2008
View
2 activesupport/CHANGELOG
@@ -1,3 +1,5 @@
+* Time#to_json: don't convert to utc before encoding. References #175 [Geoff Buesing]
+
*2.1.0 RC1 (May 11th, 2008)*
* Remove unused JSON::RESERVED_WORDS, JSON.valid_identifier? and JSON.reserved_word? methods. Resolves #164. [Cheah Chu Yeow]
View
2 activesupport/lib/active_support/json/encoders/time.rb
@@ -6,7 +6,7 @@ class Time
# # => 2005/02/01 15:15:10 +0000"
def to_json(options = nil)
if ActiveSupport.use_standard_json_time_format
- utc.xmlschema.inspect
+ xmlschema.inspect
else
%("#{strftime("%Y/%m/%d %H:%M:%S")} #{formatted_offset(false)}")
end
View
16 activesupport/test/json/encoding_test.rb
@@ -90,6 +90,15 @@ def test_hash_should_allow_key_filtering_with_only
def test_hash_should_allow_key_filtering_with_except
assert_equal %({"b": 2}), { 'foo' => 'bar', :b => 2, :c => 3 }.to_json(:except => ['foo', :c])
end
+
+ def test_time_to_json_includes_local_offset
+ ActiveSupport.use_standard_json_time_format = true
+ with_env_tz 'US/Eastern' do
+ assert_equal %("2005-02-01T15:15:10-05:00"), Time.local(2005,2,1,15,15,10).to_json
+ end
+ ensure
+ ActiveSupport.use_standard_json_time_format = false
+ end
protected
def with_kcode(code)
@@ -108,6 +117,13 @@ def with_kcode(code)
def object_keys(json_object)
json_object[1..-2].scan(/([^{}:,\s]+):/).flatten.sort
end
+
+ def with_env_tz(new_tz = 'US/Eastern')
+ old_tz, ENV['TZ'] = ENV['TZ'], new_tz
+ yield
+ ensure
+ old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
+ end
end
uses_mocha 'JsonOptionsTests' do

0 comments on commit be85868

Please sign in to comment.
Something went wrong with that request. Please try again.