如何获得红宝石日期格式以获得th,st,rd等?例如今天是8月5日。我知道之前已经问过这个问题,我已经按照这些答案提供的解决方案,但它们似乎对我没有用。
我尝试了以下三种方式:
time = DateTime.now
time.strftime("%A, %B #{time.day.ordinalize} %Y")
=> 2016-08-05T10:29:52-04:00
time = Time.now()
time.strftime("#{time.day.ordinalize} %B %Y")
=> 2016-08-05 10:29:52 -0400
time = Time.new
day = time.strftime("%d")
day.ordinalize
=> NoMethodError:
undefined method `ordinalize' for "05":String
我在spec_helper.rb文件中包含以下内容:
require 'active_support/core_ext/integer/inflections'
我使用的是ruby 2.3.0p0,活动支持gem是版本4.2.6。
任何帮助都会很棒,谢谢!
答案 0 :(得分:0)
我在rails控制台中测试了你的代码,对我而言,它正在工作。
另一种方法是使用ActiveSupport :: Inflector或to_formatted_s中的ordinalize方法(这两个方法也出现在这篇文章https://stackoverflow.com/a/14665335/4340756中):
:018 > time = Time.now()
=> 2016-08-05 17:57:26 +0300
:019 > ActiveSupport::Inflector.ordinalize(time.day)
=> "5th"
:022 > time.to_formatted_s(:long_ordinal)
=> "August 5th, 2016 17:59"
你在哪里测试过这段代码以及你有哪些版本的rails?