比较Python中未按预期工作的日期

时间:2016-02-29 17:16:39

标签: python date csv

我正在尝试将从csv文件中提取的日期与当前日期进行比较,以检查差异是否大于7天。这是我的代码:

with open (path) as csvfile:
    readcsv = csv.reader(csvfile, delimiter = ',')
    for row in readcsv:
        iso_ts = str(row[3])
        datum = (datetime.datetime.strptime(''.join(iso_ts.rsplit(':', 1)), '%Y-%m-%dT%H:%M:%S%z'))

    current_time = (datetime.datetime.strptime(datetime.datetime.now(),'%Y-%m-%dT%H:%M:%S%z'))

如果没有比较这些,我会收到以下错误

File "./netapp.py", line 32, in <module>
    current_time = (datetime.datetime.strptime(datetime.datetime.now(),'%Y-%m-%dT%H:%M:%S%z'))
TypeError: must be str, not datetime.datetime

我想检查一下,如果来自csv的数据超过当前日期的7天,然后再做一些事情。我知道这是其中任何一个日期格式的问题,但我似乎无法弄清楚究竟是什么。我非常感谢我对失踪的解释。

2 个答案:

答案 0 :(得分:1)

datetime.strptime()获取date_stringformat字符串,并将datestring参数转换为datetime对象。我认为您不需要转换任何内容,您应该能够使用timedelta对象将datumdatetime.datetime.now()进行比较。

请注意,.now()会返回表示当地时间的天真datetime对象。当地时间可能不明确 - 请勿将其用于比较。我在格式字符串中看到%z(utc offset); .strptime() returns a timezone-aware datetime object on Python 3。您无法比较天真和有意识的日期时间对象。使用.now(timezone.utc)创建可用于比较的时区感知当前时间。见Find if 24 hrs have passed between datetimes - Python

答案 1 :(得分:0)

您的格式字符串错误。 试试这个:current_time = datetime.datetime.today().strftime("%Y-%b-%dT%H:%M:%S")