【问题标题】:Rails 3 default datetime format without UTC没有UTC的Rails 3默认日期时间格式
【发布时间】:2011-04-11 07:06:43
【问题描述】:

我正在创建一个新的 Rails 3 应用程序,并在其中对几个字段使用 DateTime,但是每个日期时间字段标准背后都有 UTC(在视图中),例如:

2010-10-10 16:19:00 UTC

如何去掉 UTC 部分?

更新:这是我目前所拥有的:

<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>

所以我现在要做的就是把它放在一个助手中,但是没有更好更通用的方法吗?

我查看了其他一些帖子,建议在初始化程序中创建 time_formats.rb,但我没有成功。

感谢您的帮助,非常感谢!

【问题讨论】:

    标签: ruby-on-rails datetime ruby-on-rails-3


    【解决方案1】:

    这是最终对我有用的方法:

    我在以下位置创建了一个新文件:

    config/initializers/

    命名:time_formats.rb

    并将其添加到该文件中:

    Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
    

    然后我保存,重新启动服务器并开始工作。

    【讨论】:

    • 这适用于我 4.1。这种方法的优点是你通常不需要添加 to_s,大多数上下文会自动将时间转换为字符串。您还可以添加其他格式,例如 Time::DATE_FORMATS[:date_only] = "%Y-%m-%d" 然后像这样使用它们 date.to_s(:date_only) - 比国际化版本更少的代码,因此更好如果您没有国际化计划。
    • 您只需要添加 Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M" ,而不仅仅是时间格式;)对我有用在轨道 > 4.1
    【解决方案2】:

    用于导轨 3

    添加到config/environment.rb

    my_datetime_formats = { :default => '%F %T' } #or any other you like
    my_date_formats = { :default => '%F' } #or any other you like
    
    Time::DATE_FORMATS.merge!(my_datetime_formats)
    Date::DATE_FORMATS.merge!(my_date_formats)
    

    (与其他答案的区别-是merge!方法)

    【讨论】:

      【解决方案3】:

      另一种——也许是现在首选的——方法是使用Rails' internationalization and localization support。该指南中有很多要学习的内容,因此 tl;dr 版本是这样的:

      <%= l trip.truckleft, :format => :long %>
      

      已经有 a few predefined date and time formats:long 等英语可供您使用,您可以按照这些示例中的 YAML 结构在 config/locales/en.yml 中添加您自己的。如果您还没有深入了解整个 i18n/l10n 并且一直看着 l 方法感到困惑,您也可以使用:

      <%= trip.truckleft.to_formatted_s(:long) %>
      

      【讨论】:

      • 啊,这里是the guide I was trying to link。 Stack Overflow 不允许我发布多个链接,因为我的帐户是新帐户。嘘。
      • +1 并投票支持提高您的代表--Stack Overflow 需要更多像您这样的人
      【解决方案4】:

      确切地说,你应该把这些放在你的初始化器中:

      Date::DATE_FORMATS[:default] = "%m-%d-%Y"
      Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"
      

      当有日期时间时,第二个将起作用(例如:created_at for in models)。

      【讨论】:

        【解决方案5】:

        我正在使用 i18n 来格式化我的日期并将其保存在 en.yml 中:

        date:
          formats:
            default: "%m/%d/%Y"
        

        我想重用该格式来显示模型的日期,因此我的 config/initializers/time_formats.rb 包含以下内容:

        Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
        

        【讨论】:

          【解决方案6】:

          您可以将以下行放在config/environment.rb 文件的末尾:

          Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
          

          【讨论】:

            猜你喜欢
            • 2019-02-12
            • 2013-05-09
            • 1970-01-01
            • 1970-01-01
            • 2013-07-26
            • 1970-01-01
            • 2019-07-27
            • 2023-03-23
            • 1970-01-01
            相关资源
            最近更新 更多