mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Don't blank pad day of the month when formatting dates
We are currently using `%e` which adds a space before the result if the digit is a single number. This leads to strings like `February 2, 2016` which is undesireable. I've opted to replace with 0 padding instead of removing the padding entirely, to preserve compatibility for those relying on the fact that the width is constant, and to be consistent with time formatting. Fixes #25251.
This commit is contained in:
parent
c587b63664
commit
2c5a8ba6f6
3 changed files with 21 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
* `Date.to_s` doesn't produce too many spaces. For example, `to_s(:short)`
|
||||
will now produce `01 Feb` instead of ` 1 Feb`.
|
||||
|
||||
Fixes #25251.
|
||||
|
||||
*Sean Griffin*
|
||||
|
||||
* Introduce Module#delegate_missing_to.
|
||||
|
||||
When building a decorator, a common pattern emerges:
|
||||
|
|
|
@ -5,15 +5,15 @@ require 'active_support/core_ext/module/remove_method'
|
|||
|
||||
class Date
|
||||
DATE_FORMATS = {
|
||||
:short => '%e %b',
|
||||
:long => '%B %e, %Y',
|
||||
:short => '%d %b',
|
||||
:long => '%B %d, %Y',
|
||||
:db => '%Y-%m-%d',
|
||||
:number => '%Y%m%d',
|
||||
:long_ordinal => lambda { |date|
|
||||
day_format = ActiveSupport::Inflector.ordinalize(date.day)
|
||||
date.strftime("%B #{day_format}, %Y") # => "April 25th, 2007"
|
||||
},
|
||||
:rfc822 => '%e %b %Y',
|
||||
:rfc822 => '%d %b %Y',
|
||||
:iso8601 => lambda { |date| date.iso8601 }
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,17 @@ class DateExtCalculationsTest < ActiveSupport::TestCase
|
|||
assert_equal "2005-02-21", date.to_s(:iso8601)
|
||||
end
|
||||
|
||||
def test_to_s_with_single_digit_day
|
||||
date = Date.new(2005, 2, 1)
|
||||
assert_equal "2005-02-01", date.to_s
|
||||
assert_equal "01 Feb", date.to_s(:short)
|
||||
assert_equal "February 01, 2005", date.to_s(:long)
|
||||
assert_equal "February 1st, 2005", date.to_s(:long_ordinal)
|
||||
assert_equal "2005-02-01", date.to_s(:db)
|
||||
assert_equal "01 Feb 2005", date.to_s(:rfc822)
|
||||
assert_equal "2005-02-01", date.to_s(:iso8601)
|
||||
end
|
||||
|
||||
def test_readable_inspect
|
||||
assert_equal "Mon, 21 Feb 2005", Date.new(2005, 2, 21).readable_inspect
|
||||
assert_equal Date.new(2005, 2, 21).readable_inspect, Date.new(2005, 2, 21).inspect
|
||||
|
|
Loading…
Reference in a new issue