在處理語言/區域特定數據之前,您需要設置正確的語言環境。
與
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
參數。
您是否設置了正確的語言環境? 'locale.getlocale(locale.LC_TIME)'返回什麼? – dhke
name'locale'沒有被定義... – user2520969
如果「Dom」被替換爲「Sun」,那麼我認爲它是一個區域設置問題。 –