我一直在使用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>
我知道的很奇怪,但我认为有人必须先处理过这个问题。
答案 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的含义。您需要决定如何在应用中处理时区。