在views.html.erb中编辑日期时间

时间:2017-11-08 07:35:52

标签: ruby-on-rails ruby datetime

所以我在Rails上开发一个应用程序,当我从数据库中调用它时,我想编辑datetime的格式。我已经在网上找到了任何在我已经在数据库中创建日期类型时更改它的内容。

这是它目前正在展示的2017-11-01 21:36:55 UTC

我希望格式为MM / DD / YYYY 00:00 PM / AM 12小时时间

   create_table "notifications", force: :cascade do |t|
       t.string "title"
       t.datetime "date"
       t.text "content"
       t.datetime "created_at", null: false
       t.datetime "updated_at", null: false
    end

此代码位于我的views / notifications / notifications.html.erb

<tbody>
    <% @notification.each do |notification| %>
      <tr>
        <td><%= notification.title %></td>
        <td><%= notification.first_name %></td>
        <td><%= notification.date %></td>
        <td><%= notification.content %></td>
      </tr>
    <% end %>
</tbody>

3 个答案:

答案 0 :(得分:0)

您可以使用strftime

<td><%= notification.date.strftime('%m/%d/%Y %I:%M %p') %></td>
<!-- Example output "10/23/2017 09:39 PM" -->
  • %m给出了一个月的时间
  • %d给出了一天中的某一天
  • %Y给出了没有世纪的年份
  • %I以12小时时钟格式显示小时时间
  • %M给出时间分钟
  • %p给出时间的上午/下午

答案 1 :(得分:0)

<td><%= notification.date.strftime("%m/%d/%Y %I:%M %p") %></td>

<强>解释

%I  - 12 hour format
%p   - AM/PM format
....

了解详情,请查看文档https://apidock.com/ruby/DateTime/strftime

答案 2 :(得分:0)

我更喜欢使用rails的本地化系统。见Adding Date/Time Formats。有了这个,您可以自由地在locales文件中定义一些日期/日期时间格式,您可以重复使用这些格式。

# config/locales/en.yml
en:
  time:
    datetime:
      formats:
        default: "%m/%d/%Y %I:%M %p"
        my_format: "%m/%d/%Y %I:%M %p"

然后使用l辅助方法将它们应用到视图中的日期时间值。使用默认格式:

<td><%= l(notification.date) %></td>

或者使用特殊格式,如果它不同:

<td><%= l(notification.date, format: :my_format) %></td>

好处:您不仅可以在视图中使用定义的格式。使用I18n.l方法,您也可以在脚本中使用它,并且对格式的更改将应用​​于整个应用程序。一个DRY配置在一个地方。

但首先,您需要了解如何configure适用于您的应用的国际化/本地化系统。