2013-01-31 16 views
1

我偶然發現了一種使用慢性寶石的有趣(並且有些時候令人費解)。慢性病有24小時的時間嗎?

解析字符串1/21/13 2:20

Chronic.parse('1/21/13 2:20') 
=> 2013-01-21 14:20:00 -0800 

但是,如果0是發生在2面前:

Chronic.parse('1/21/13 02:20') 
=> 2013-01-21 02:20:00 -0800 

現在,我可以把上午或下午在字符串的結尾,它基本上覆蓋了這種行爲(所以不管領先的0是否存在都沒關係),但這顯然是解析的額外步驟,並且否定了使用慢性的許多優點。是否有另外一個選擇來恰當地處理這個領先的零問題?這引起了我的警惕,這還沒有得到解決。

我應該注意到我需要解析的字符串可能是上面提到的兩種情況之一。

+0

如何添加AM/PM negatve使用慢性的優勢在哪裏?我認爲最合理的做法是對創業板的拉動要求,以使行爲保持一致。 – sunnyrjuneja

+0

@SunnyJuneja它不完全否定使用慢性,但它是我的一個額外的解析步驟(字符串來自我無法控制的外部來源)。然而,慢性的整個想法似乎是爲了避免這樣的解析。 –

回答

1

好了,你可以只減去12時間:

time = Chronic.parse('1/21/13 2:20') 
time -= - 12 * 60 * 60 if time.hour >= 12 
#=> 2013-01-22 02:20:00 0800 
+0

如果有一個以14:20給出的時間,則這不起作用。 –

+0

對於那些我想你可以檢查'time.hour!= str [/ \ d +(?=:)/]。to_i' – pguardiario