2016-02-05 59 views
1

如何將字符串格式的日期與當前時間進行比較?以字符串格式轉換西班牙日期?

我嘗試這樣做:

import time, datetime 

if time.strptime(date.find(text=True), "%a, %d/%m/%Y").now() > datetime.now(): 

但我得到這個錯誤:

ValueError: time data u'Dom, 07/02/2016' does not match format '%a, %d/%m/%Y' 

需要關於如何做到這一點的建議。

+2

您是否設置了正確的語言環境? 'locale.getlocale(locale.LC_TIME)'返回什麼? – dhke

+0

name'locale'沒有被定義... – user2520969

+2

如果「Dom」被替換爲「Sun」,那麼我認爲它是一個區域設置問題。 –

回答

2

在處理語言/區域特定數據之前,您需要設置正確的語言環境。

import locale 
locale.setlocale(locale.LC_TIME, '') 
time.strptime(date_string, "%a, %d/%m/%Y") 

''告訴庫即可領取您系統的當前區域設置(如果已設置),再試一次。

如果您需要在不同語言環境中解析日期,則情況會稍微複雜一些。詳細請見How do I strftime a date object in a different locale?

可以明確地設置特定的區域設置,例如,

locale.setlocale(locale.LC_TIME, 'es_ES.UTF-8') 
time.strptime('Dom, 01/02/1903', '%a, %d/%m/%Y') 
=> time.struct_time(tm_year=1903, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=32, tm_isdst=-1) 

但請記住,此設置是全局性的。 strptime()不接受參數來指定要解析的特定區域設置,它總是選取全局區域設置。

如果日期是用戶提供的,我已經使用dateparser包作爲一個可喜的替代方案。特別是如此,因爲它的parse()函數接受一個明確的languages參數。

相關問題