2016-10-02 9 views
0

私はChronicをRailsアプリケーションで数週間使用しています。私はそれに夢中になったことはありません。「1:21 pm」や「1440」などの基本的な時間入力を解析するために使用しています。今日までテストスイートを実行し、失敗。夏時間のシンプルな時刻形式の解析を慢性的に停止

これらすべての作業:

Chronic.parse('1:21am') 
=> 2016-10-02 00:21:00 +1000 
Chronic.parse('0121') 
=> 2016-10-03 01:21:00 +1100 
Chronic.parse('0021') 
=> 2016-10-03 00:21:00 +1100 
Chronic.parse('1:21 AM') 
=> 2016-10-02 00:21:00 +1000 

しかし12:21 AMはnilを返す:私のコードでは

Chronic.parse('12:21 AM') 
=> nil 

をそれがすべてですので、私は実際に日付を取り除くだけの時間を保つためにstrftimeをやっています私は気にする。しかし、それは慢性的にnilを返すときに当然働きません。面白いのは何

self.time = Chronic.parse(time).try(:strftime, '%l:%M %p') 

は今朝夏時間が私のタイムゾーン、シドニーのためで蹴らということです。私はしばらくの間このコードの周りに他のものを変更していないので、私はそれが関連していると推測します。

+0

これは見ましたか? https://github.com/mojombo/chronic/issues/328 –

+0

@AlexandreAngelimああクール、いいえ私はそれを見ていない。私は提案された推測を試みました::解決策を開始しますが、うまくいきませんでした。何がお勧めですか?言及された書き換えPRで解決されるかもしれないように見えます。私はそれを目標にできる。 –

+0

あなたはこれについて私を嫌うつもりですが、Chronicの結果が「無し」で、「明日#{time}」を使用するかどうかをテストできます。その日が実際に存在し、あなたはその日が必要でない日になるでしょう。このようなものは、次のようになります。 "(Chrun.parse(time)|| Chronic.parse(" tomorrow#{time} "))try(:strftime、 '%l:%M%p') –

答えて

0

2つの解決策があります。

A)は、この方法では、私のために働いたTime.zone

を使用する慢性知らせます。基本的には:

Chronic.time_class = Time.zone 
self.time = Chronic.parse(time).try(:strftime, '%l:%M %p') 

B)夏時間に影響されない固定の日付を使用して解析し

私はこのケースでは、我々は特定のを使用することができ、時間ではなく日付で唯一興味を持っているので私たちが知っている日付は、時間解析時の夏時間の影響を受けません。例:

Chronic.parse("5/27/1979 at #{time}").try(:strftime, '%l:%M %p') 
関連する問題