Rails显示对象的created_at和updated_at的错误日期

时间:2015-11-03 07:59:35

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

我的申请表有问题。我正在制作一个简单的CMS,我需要显示帖子'创立日期。我现在正在做的事情不能正常工作。它正确显示时间,但不显示日期。对于每个条目,它显示日期是10月20日,尽管它不是。

我通过rails c检查了我的数据库,它存储了正确的值。所以问题必须在显示代码的某个地方。

以下是我输出的方式:

<% @articles.each do |article| %>
  <h3 class="article-title"><u><%= link_to article.title, article %></u></h3>
  <p><%= article.text.html_safe %></p>
  <div class="article-info">
    <p>Posted on <em><%= article.updated_at.strftime("%A, %C %B %G %R") %> </em> by <em><%= article.user.username %></em> |
    <%= link_to 'Comments...', article %>
    <% if user_signed_in? and article.user == current_user %>
       | <%= link_to 'Edit', edit_article_path(article) %>
       | <%= link_to 'Destroy', article, method: :delete, data: { confirm: 'Are you certain you want to delete this?' } %> </p>
    <% end %>
    </div>
    <% if article.tag_list.any? %>
      <div class="article-tags">Tags: <%= raw article.tag_list.map { |tag| link_to tag, tag_path(tag)}.join(", ") %></div>
    <% end %>
  <hr />
<% end %>

什么可能导致这种行为?

2 个答案:

答案 0 :(得分:1)

您的问题是strftime属性:

<%= article.updated_at.strftime("%A, %C %B %G %R") %>
  

%A - 完整的工作日名称(Sunday'') %C - year / 100 (round down. 20 in 2009) %B - The full month name ( 1月份')   %G - 基于周的年份%R - 24小时时间(%H:%M)

你需要使用这个:

<%= article.updated_at.strftime("%A, %d %B %Y %R") %>
  

%d - %d - 月中的某天,零填充(01..31)

     

%Y - 世纪年

APIdock - DateTime

答案 1 :(得分:1)

在您的代码中使用此格式

<%= article.updated_at.strftime("%A, %d %B %Y %l:%M%p") %>