6

我在这里有一个简单的问题。我有一个带有 created_at 的实例变量。我将如何将其转换为 Month, day, year ~ September, 13, 1987

当我尝试 = @example.created_at 在我看来它给了我1987-09-13

奇怪的是,当我在控制台中执行此方法时,我得到了Sun, 13 Sep 1987

  1. 如何将变量转换为月、日、年?
  2. 为什么它在控制台中返回不同的东西?
4

3 回答 3

10

您可以通过指定格式来更改日期的显示方式,例如

@example.created_at.strftime("%B, %d, %Y")
# => "September, 20, 2013" 

在此处查看各种格式选项

由于默认格式不同,控制台和视图中的显示格式不同。

于 2013-09-20T20:33:43.197 回答
2

处理显示日期和时间的一个好习惯是为您的应用程序设置国际化,更多信息在这里:

http://guides.rubyonrails.org/i18n.html

日期示例(en.yml):

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

您可以在视图中显示各种日期格式,如下所示:

l Date.current, format: :short

这种方法的优点是您可以轻松更改所有日期在应用程序中的显示方式,因为格式是在一个地方定义的,并且您的应用程序已为将来的更多语言环境做好准备。

于 2013-09-20T20:47:06.290 回答
1

是的..可能!

require 'date'

d = Date.parse('September, 13, 1987')
month, day, year=d.month,d.day,d.year
month # => 9
day # => 13
year # => 1987
于 2013-09-20T20:27:21.327 回答