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

byt*_*uit 5 ruby ruby-on-rails-3

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

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

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

bjh*_*aid 14

使用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"
Run Code Online (Sandbox Code Playgroud)


Tim*_*van 5

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

date.to_formatted_s(:short)
date.to_formatted_s(:long)
Run Code Online (Sandbox Code Playgroud)

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

Date::DATE_FORMATS[:my_format] = '%a, %d %b %Y'
date.to_formatted_s(:my_format)
Run Code Online (Sandbox Code Playgroud)

这将阻止您在整个应用程序中传播格式字符串。