Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix #6962. AS::TimeWithZone#strftime responds incorrectly to %:z and …

…%::z format strings.
  • Loading branch information...
commit 4e715e33aff6274267446d8dcb63da7f60c683b6 1 parent c41f9c1
Toshinori Kajihara authored
4 activesupport/CHANGELOG.md
View
@@ -1,3 +1,7 @@
+## Rails 3.2.9 (unreleased)
+
+* Add %:z and %::z format string support to ActiveSupport::TimeWithZone#strftime. [fixes #6962] *kennyj*
+
## Rails 3.2.8 (Aug 9, 2012) ##
* Fix ActiveSupport integration with Mocha > 0.12.1. *Mike Gunderloy*
5 activesupport/lib/active_support/time_with_zone.rb
View
@@ -177,7 +177,10 @@ def to_s(format = :default)
# Replaces <tt>%Z</tt> and <tt>%z</tt> directives with +zone+ and +formatted_offset+, respectively, before passing to
# Time#strftime, so that zone information is correct
def strftime(format)
- format = format.gsub('%Z', zone).gsub('%z', formatted_offset(false))
+ format = format.gsub('%Z', zone)
+ .gsub('%z', formatted_offset(false))
+ .gsub('%:z', formatted_offset(true))
+ .gsub('%::z', formatted_offset(true) + ":00")
time.strftime(format)
end
8 activesupport/test/time_zone_test.rb
View
@@ -235,6 +235,14 @@ def test_formatted_offset_negative
assert_equal "-0500", zone.formatted_offset(false)
end
+ def test_z_format_strings
+ zone = ActiveSupport::TimeZone['Tokyo']
+ twz = zone.now
+ assert_equal '+0900', twz.strftime('%z')
+ assert_equal '+09:00', twz.strftime('%:z')
+ assert_equal '+09:00:00', twz.strftime('%::z')
+ end
+
def test_formatted_offset_zero
zone = ActiveSupport::TimeZone['London']
assert_equal "+00:00", zone.formatted_offset
Please sign in to comment.
Something went wrong with that request. Please try again.