我有一个旧数据库,其中每个用户首选的date_format
可以具有以下值之一:
dd.mm.yy
dd/mm/yy
mm/dd/yy
我注意到这种格式与一些javascript函数很好地配合(这可能就是他们选择它的原因)。
但是如何使用这些格式在Ruby on Rails中格式化日期?
我想使用date.strftime("dd.mm.yy")
之类的内容,但strftime
不接受上述三种格式中的任何一种。
如何做到这一点?
感谢您的帮助。
答案 0 :(得分:2)
它不接受它,因为dd.mm.yy
不是strftime格式。正确的模式是"%d.%m.%y"
,"%d/%m/%y"
和"%m/%d/%y"
Date.today.strftime("%d.%m.%y") #=> "01.08.14"
Date.today.strftime("%d/%m/%y") #=> "01/08/14"
Date.today.strftime("%m/%d/%y") #=> "08/01/14"
所以你需要简单地转换你的模式,例如“dd.mm.yy”:
"dd.mm.yy".gsub('dd','%d').gsub('mm', '%m').gsub('yy', '%y') #=> "%d.%m.%y"
您可以在strftime
中使用它:
Date.today.strftime("dd.mm.yy".gsub('dd','%d').gsub('mm', '%m').gsub('yy', '%y')) #=> "01.08.14"
答案 1 :(得分:2)
如果我问你问题,你只需要修改格式字符串,以便strftime
能够识别它。例如,使用gsub
:
def my_date_format(date, format)
strftime_format = format.gsub(/([dmy])\1/, 'dd' => '%d', 'mm' => '%m', 'yy' => '%Y')
date.strftime(strftime_format)
end
require 'date'
my_date_format(Date.today, 'dd.mm.yy')
# => "01.08.2014"
答案 2 :(得分:0)
请参阅http://apidock.com/ruby/DateTime/strftime
您需要使用%d
等。