ruby-on-rails - 在 Rails 中的模型中格式化日期时间

标签 ruby-on-rails date methods model formatting

我有一个 View 将日期时间打印为 #{@event.starts_at.strftime("%m/%d/%Y %H:%M")}。所以每次打印starts_at 时,我都必须在 View 中使用strftime。我需要找到一种方法将方法添加到我的“事件”模型中,以便每次打印 event.starts_at 或 event.method_name(starts_at) 时都会自动格式化日期

最佳答案

您可以像下面这样覆盖 getter:

class Event < ActiveRecord::Base
  def starts_at
    attributes['starts_at'].strftime("%m/%d/%Y %H:%M")
  end
end

考虑到您必须对属性哈希使用字符串而不是符号。

这么说,如果您的应用程序尝试国际化,这会锁定您,因为时间格式因地区而异

您可以使用 Rails I18n:

de.yml
de:
  time:
    formats: 
      default: '%A, %d. %B %Y, %H:%M Uhr'
      long: '%A, %d. %B %Y, %H:%M Uhr'
      short: '%d. %B, %H:%M Uhr'
      very_short: '%d.%m.%Y, %H:%M Uhr'

有了它,你可以使用:
> I18n.localize Event.first.starts_at, format: :very_short
# => "26.11.2012, 10:35 Uhr"
localize方法别名为 I18n.l
它将使用正确的(如果已定义)

关于ruby-on-rails - 在 Rails 中的模型中格式化日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27600995/

相关文章:

ruby-on-rails - 在同一 View RoR 中的表单之间传递参数

JavaScript 日期差异 - 一小时太多

javascript - 如何从 asp :textbox texmode:date? 中删除向上向下箭头键

JAVA:具有相同名称的方法?

java - 如何将一种方法的值应用到另一种方法?

javascript - Foundation 5 Modal Reveal 在 Rails 中不起作用

ruby-on-rails - 同时使用redis和memcached,我还应该使用session api吗?

java - 将方法调用放入 ArrayList?

ruby-on-rails - Bigcommerce redirect_uri_mismatch oauth2 错误

javascript - 在 JavaScript 中计算日期