0

私は、自然言語パーサーである Chronic を使用してきました。私が今直面している問題は、ミリタリー タイムを解析して、ユーザーが見るのが通常の AM/PM 時間の形式に戻すことができないことです。

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

利回り => 月 7 月 05 日 12:00:00 -0500 2010

「2010 年 7 月 5 日月曜日 12:00:00 -0500 2010」を「7 月 5 日月曜日 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 日、または 05:00 AM ではなく 5:00 AM にする方法を理解するための演習として、読者に任せます。または、SO で別の Q を尋ねます)

追加した:

また、タイムゾーンに注意する必要があることに注意してください。Chronic の解析では、現地時間と現地のタイムゾーンが使用されています。(サーバーに対してローカルです。) -0500 が意味することです。アプリでタイムゾーンを処理する方法を決定する必要があります。

于 2010-07-01T01:26:59.887 に答える