diff options
author | Andrew White <pixeltrix@users.noreply.github.com> | 2015-10-02 13:55:47 +0100 |
---|---|---|
committer | Andrew White <pixeltrix@users.noreply.github.com> | 2015-10-02 13:55:47 +0100 |
commit | c80b114c45215e713711c018a1ed2e6b264c22f8 (patch) | |
tree | 8f1b9aea43356c25910bd8095601bc86a0bcec4c /activesupport/lib/active_support | |
parent | a9f66de35266ae3ccf272009863fb26fdb6bcf27 (diff) | |
parent | 602ffe2a63a455bf4a8177552226db955b59e493 (diff) | |
download | rails-c80b114c45215e713711c018a1ed2e6b264c22f8.tar.gz rails-c80b114c45215e713711c018a1ed2e6b264c22f8.tar.bz2 rails-c80b114c45215e713711c018a1ed2e6b264c22f8.zip |
Merge pull request #20600 from mtsmfm/xmlschema-should-display-more-than-6-digits
TimeWithZone#xmlschema should be able to display more than 6 digits
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/time_with_zone.rb | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/time_with_zone.rb b/activesupport/lib/active_support/time_with_zone.rb index a82a7dfea0..3592dcba39 100644 --- a/activesupport/lib/active_support/time_with_zone.rb +++ b/activesupport/lib/active_support/time_with_zone.rb @@ -41,6 +41,9 @@ module ActiveSupport 'Time' end + PRECISIONS = Hash.new { |h, n| h[n] = "%FT%T.%#{n}N".freeze } + PRECISIONS[0] = '%FT%T'.freeze + include Comparable attr_reader :time_zone @@ -142,11 +145,7 @@ module ActiveSupport # # Time.zone.now.xmlschema # => "2014-12-04T11:02:37-05:00" def xmlschema(fraction_digits = 0) - fraction = if fraction_digits.to_i > 0 - (".%06i" % time.usec)[0, fraction_digits.to_i + 1] - end - - "#{time.strftime("%Y-%m-%dT%H:%M:%S")}#{fraction}#{formatted_offset(true, 'Z')}" + "#{time.strftime(PRECISIONS[fraction_digits.to_i])}#{formatted_offset(true, 'Z'.freeze)}" end alias_method :iso8601, :xmlschema |