【问题标题】:Removing eg. (UTC, +0100, +0200, +seconds ) from the timezone RAILS删除例如。 (UTC, +0100, +0200, +seconds ) 从时区 RAILS
【发布时间】:2014-10-13 17:59:51
【问题描述】:

我正在尝试学习一些轨道并且它正在向前发展,但让我困扰的是正如标题所说,时间戳的结束。作为瑞典人,我对其进行了修改以显示我的正确时区。

例如:2014-08-20 13:24:51 +0200

但我想看到的是2014-08-20 13:24

显示我使用的每个帖子的时间

<% @blog_posts.reverse_each do |blog_post| %>
    <h3><%= blog_post.title %></h3>
    <p> <%= blog_post.created_at.to_s %> </p>
    <p>
      <%= simple_format(blog_post.body) %>
    </p>
<% end %>

任何人有一个简单的想法来解决这个问题?

【问题讨论】:

  • 搜索 strftime 和/或 i18n.localize

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


【解决方案1】:

试试

<%= blog_post.created_at.to_s %>

或者使用strftime:

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

【讨论】:

  • 试过这个并重新启动服务器,但它似乎没有工作。它仍然显示第二个值和结尾(+0200)
【解决方案2】:

你可以使用to_formatted_s方法:

<%= blog_post.created_at.to_formatted_s(:db) %>

它也会显示seconds。如果您只需要日期、小时和分钟,请尝试:

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

【讨论】:

    【解决方案3】:

    在 Rails 中,您可以对字符串使用 to_time 函数将其转换为 Date 对象:

    > '2014-8-20 14:27:46'.to_time.strftime('%B %e at %l:%M %p')
    => "August 20 at 2:27 PM"
    

    strftime 格式指令:

    • %B全月名
    • %e 日期
    • %l 小时
    • %M 分钟
    • %p 子午线指标(上午/下午)

    【讨论】:

    • 我真的很喜欢这个想法,但是它显示为您显示"August and PM" 您是否知道如何让它以不同的语言显示?像瑞典语一样是Augusti 20 2:27 EM
    • 你能说得清楚一点吗。为此你可能需要问一个不同的问题,如果你觉得有帮助,请选择答案。
    • 使用函数.to_time.strftime('%B %e at %l:%M %p') 以英文显示August 20 at 2:27 PM 但是对于瑞典用户它“应该”看起来像Augusti 20 2:27 EM,你知道我的意思吗?
    • 是的,为此您必须研究国际化,它涉及设置语言环境,一旦完成,它将所有日期转换为瑞典语。更多信息在这里 - guides.rubyonrails.org/i18n.html .
    【解决方案4】:

    查看 ruby​​ 类 Time 中的方法 strftime

    <%= blog_post.cteated_at.strftime("%Y-%m-%d %H-%M") %>
    

    此链接也可能会有所帮助 Strfti.me

    编辑:

    要本地化您的时间,您必须使用 localize 或 l => 首先从Rails locale files下载你的locale yml文件 将原始文件复制到配置文件/语言环境。 在这个文件中,你可以设置你的默认 strftime:

    formats: 
      default: "%B %e at %l:%M %p"
    

    然后在你的 application.rb 中

    config.i18n.default_locale = :pl // 对我来说是 pl :)

    最后在你看来

    l blog_post.created_at

    希望对你有帮助:)

    【讨论】:

    • 这行得通,我可能需要更新这个问题,但如果你能像 GhostBuster 所说的那样帮助我显示“August 20”但瑞典语输入“Augusti 20”,那就太好了
    【解决方案5】:

    试试这个..

    <%= @user.created_at.to_date.to_formatted_s(:long_ordinal)%> => July 5th, 2014
    
    <%=@user.created_at.strftime("%b %d,%Y") %> =>  Jul 05,2014
    

    ...随你喜欢

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多