rails - 用军事时间解析AM / PM,使用慢性?

时间:2010-06-30 23:38:06

标签: ruby-on-rails datetime time chronic

我一直在使用Chronic,自然语言解析器和它的真棒。我现在遇到的问题是我无法解析它给我回到某种形式的AM / PM时间的军事时间,这对于用户来说是正常的。

 <%= Chronic.parse("next monday") %>

yield =&gt; Mon Jul 05 12:00:00 -0500 2010

有没有办法倒退,所以我可以解析“Mon Jul 05 12:00:00 -0500 2010”到“7月5日星期一上午5点”,或者甚至更好,只是“早上5点”?< / p>

我知道的很奇怪,但我认为有人必须先处理过这个问题。

1 个答案:

答案 0 :(得分:2)

慢性不会返回字符串

Mon Jul 05 12:00:00 -0500 2010

相反,Chronic正在返回Time类的实例

由于erb&lt;%= xxx%&gt;想要一个字符串,自动调用.to_s。那真正发生了什么:

<%= Chronic.parse("next monday").to_s %>

听起来你想要一种不同的输出格式。使用方法strftime

<%= Chronic.parse("next monday").strftime("%I:%M %p") %>
  ==> 05:00 AM

or
<%= Chronic.parse("next monday").strftime("%A %B %I:%M %p") %>
  ==> Monday July 5 05:00 AM

(我会把它作为练习留给读者来弄清楚如何在7月5日而不是7月5日或5:00 AM而不是05:00 AM。或者在SO上询问另一个Q)

补充:

另请注意,您需要了解时区。慢性解析使用本地时间和本地时区。 (本地服务器。)这就是-0500的含义。您需要决定如何在应用中处理时区。