提交 2c5a8ba6 编写于 作者: S Sean Griffin

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.
上级 c587b636
* `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 @@
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 @@ def test_to_s
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册