我正在尝试将从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天,然后再做一些事情。我知道这是其中任何一个日期格式的问题,但我似乎无法弄清楚究竟是什么。我非常感谢我对失踪的解释。
答案 0 :(得分:1)
datetime.strptime()
获取date_string
和format
字符串,并将datestring参数转换为datetime
对象。我认为您不需要转换任何内容,您应该能够使用timedelta
对象将datum
与datetime.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")