我正在寻找一种方法,我可以将日期转换为更多人类可读的格式......例如:
2013年2月12日可以转换为“2013年12月2日” 12/03/2013应转换为“2013年12月3日” 2013年11月27日可以转换为“2013年11月27日”
Ruby / Rails中的任何函数是否可以随时使用,或者除了日期数字之外我还必须自己编写处理“st”,“nd”,“rd”和“th”的内容?
答案 0 :(得分:8)
你可以试试这个
t = Time.now()
t.strftime("#{t.day.ordinalize} %B %Y")
这将导致
27th November 2013
答案 1 :(得分:1)
您应该使用strftime
函数(可在多个语言中使用)来格式化时间和日期。
在您的情况下,只需要很少的努力就可以获得一些非常好的结果:
Time.now.strftime("%e %b %Y") #=> "27 Nov 2013"
对于ordinalization,编写自定义函数或使用Rails'ordinalize
(如前所述)。
这是来源:
def ordinalize(number)
if (11..13).include?(number.to_i.abs % 100)
"#{number}th"
else
case number.to_i.abs % 10
when 1; "#{number}st"
when 2; "#{number}nd"
when 3; "#{number}rd"
else "#{number}th"
end
end
end
答案 2 :(得分:0)
使用:Time.now.strftime(“%a%B%d,%Y”)
=> "Wed November 15, 2013"
==> today = Time.now
==> today = today.strftime("%a %B #{t.day.ordinalize}, %Y")
==> "Wed November 27th, 2013"
答案 3 :(得分:0)
如果你经常这样做,那么邮票宝石非常有用 - https://github.com/jeremyw/stamp
它允许您执行以下操作:
date = Date.new(2011, 6, 9)
date.stamp("Sunday, May 1, 2000") #=> "Thursday, June 9, 2011"
date.stamp("Sun Aug 5") #=> "Thu Jun 9"
date.stamp("12/31/99") #=> "06/09/11"
date.stamp("DOB: 12/31/2000") #=> "DOB: 06/09/2011"
date.stamp("November 5th") #=> "June 9th"
date.stamp("1st of Jan") #=> "9th of Jun"