跟进将日期格式从Time.now更改为post.created_at

时间:2010-06-25 02:39:29

标签: ruby-on-rails ruby datetime

关于如何以可读方式格式化日期的堆栈溢出

I previously asked a question。这就是它的主旨。

我该怎么做

2010-06-14 19:01:00 UTC

并将其转换为

June 14th, 2010

我使用的答案是调用post.date,只需将下面的内容添加到post.rb

即可
@date = Time.now
@date.strftime("%B %d, %Y")

它确实以单词显示日期,但我不想显示当前日期。我想要post.created_at日期。

如何修改上述内容(或我需要在其他地方添加什么内容)才能使其正常工作?

3 个答案:

答案 0 :(得分:15)

post.created_at.strftime("%B %d, %Y")

strftime的一个很好的资源是http://strfti.me

答案 1 :(得分:2)

您可以定义自己的格式化程序,以便重新用作初始化程序。

 # config/initializers/time_formats.rb
  Time::DATE_FORMATS[:nice] = "%B %d, %Y"

然后使用

 User.created_at.to_formatted_s(:nice)

参考

答案 2 :(得分:0)

如果您正在使用Rails,您还可以在区域设置中定义自定义时间格式。

这就是我对波兰语语言环境的看法:

pl:
  date:
    formats:
      default: "%Y-%m-%d"
      short: "%d %b"
      long: "%d %B %Y"

    day_names: [Niedziela, Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota]
    abbr_day_names: [nie, pon, wto, śro, czw, pia, sob]

    month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień]
    abbr_month_names: [~, sty, lut, mar, kwi, maj, cze, lip, sie, wrz, paź, lis, gru]
    order: [ :year, :month, :day ]

  time:
    formats:
      default: "%a, %d %b %Y, %H:%M:%S %z"
      short: "%d %b, %H:%M"
      long: "%d %B %Y, %H:%M"
    am: "przed południem"
    pm: "po południu"

然后在视图中使用以下方法对时间戳进行本地化:

<%= l(@post.created_at, :format => :long) %>

或外界观点:

I18n.l(@post.created_at, :format => :long)

这比直接在Time或Date类中定义格式更灵活。