将ruby日期转换为字符串而不丢失格式

时间:2014-01-30 22:13:50

标签: ruby ruby-on-rails-3

我正在尝试将Ruby Date对象转换为字符串。日期格式为:2013年9月15日,星期日

但是,当我使用'to_s'将其转换为字符串时,它给出了以下内容:2013-09-15

相反,我希望它作为一个字符串保留为“Sun,2013年9月15日”。

2 个答案:

答案 0 :(得分:11)

使用Date#strftime有很多选项

require 'date'


date = Date.parse("Sun, 15 Sep 2013") # => #<Date: 2013-09-15 ((2456551j,0s,0n),+0s,2299161j)>

date.strftime("%a, %d %b %Y") # => "Sun, 15 Sep 2013"

答案 1 :(得分:4)

strftime效果很好,但是,如果您发现在多个地方使用相同的格式,您会发现使用Rails Date#to_formatted_s method更合适的选项。您可以使用内置格式:

date.to_formatted_s(:short)
date.to_formatted_s(:long)

或者,您可以创建自己的格式,将它们添加到Date :: DATE_FORMATS:

Date::DATE_FORMATS[:my_format] = '%a, %d %b %Y'
date.to_formatted_s(:my_format)

这样可以避免在整个应用中传播格式化字符串。