0

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

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

收益率 => 2010 年 7 月 5 日星期一 12:00:00 -0500

有没有办法倒退,所以我可以将“Mon Jul 05 12:00:00 -0500 2010”解析为“Monday July 5th 5:00 AM”,或者更好的是“5:00 AM”?

我知道一个奇怪的人,但我认为以前一定有人处理过这个问题。

4

1 回答 1

2

慢性不返回字符串

Mon Jul 05 12:00:00 -0500 2010

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

由于 erb <%= xxx %> 需要一个字符串,因此 .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 的含义。您需要决定如何在您的应用程序中处理时区。

于 2010-07-01T01:26:59.887 回答