2011-12-22 120 views
2

我缺少的東西,還是parsedatetime不做日期範圍,像這樣:parsedatetime顯示數據範圍?

"Next January" - 理想情況下應該返回類似('Jan 1st 2012', 'Jan 31st 2012')

(須藤代碼 - 顯然正確的蟒蛇日期對象)

同樣,

"Tomorrow"可能會返回像('Dec 23rd 2011 00:00', 'Dec 23rd 2011 23.59')

東西,我看到它可以分析的東西像"Aug 24th - Sept 1st 2012"作爲一個範圍 - 我想知道它是否可以做單一的短語日期和工作呢?

或者如果它能告訴我它找到了什麼日期/時間段 - 即第一個例子爲month,第二個例子爲day

感謝 蓋伊

回答

4

源代碼的樣子,我看到幾個正則表達式是相當多解釋可以分析什麼樣的範圍(我已刪除了與語言環境處理一些行):

# "06/07/06 - 08/09/06" 
self.DATERNG1 = self.RE_RDATE + r'\s?%(rangeseperator)s\s?' + self.RE_RDATE 

# "march 31 - june 1st, 2006" 
self.DATERNG2 = self.RE_RDATE3 + r'\s?%(rangeseperator)s\s?' + self.RE_RDATE3 

# "march 1rd -13th" 
self.DATERNG3 = self.RE_RDATE3 + r'\s?%(rangeseperator)s\s?(\d\d?)\s?(rd|st|nd|th)?' 

# "4:00:55 pm - 5:90:44 am", '4p-5p' 
self.TIMERNG1 = self.RE_RTIMEHMS2 + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2 

# "4:00 - 5:90 ", "4:55:55-3:44:55" 
self.TIMERNG2 = self.RE_RTIMEHMS + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS 

# "4-5pm " 
self.TIMERNG3 = r'\d\d?\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2 

# "4:30-5pm " 
self.TIMERNG4 = self.RE_RTIMEHMS + r'\s?%(rangeseperator)s\s?' + self.RE_RTIMEHMS2 

正如您所看到的,在所有正則表達式中都有一個分隔符,用於決定拆分字符串的位置,然後解析開始日期和結束日期。

因此,作爲您的問題的答案,目前無法將單個短語解析爲當前實現的範圍。

+1

jcollado是正確的,他的答案應該被標記爲回答你的問題。我編寫了parsedatetime的範圍代碼,以僅處理明確的日期範圍,並且不處理月,年和/或周組合暗示的範圍 – bear 2013-03-11 01:22:14