2016-02-05 60 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参数。

相关问题