我正在尝试更新我的一些csv文件,稍后更新我的数据库。看起来strftime每个月都会混淆。我在德国,我们写的是DD/MM/YYYY
而不是MM/DD/YYYY
。
如何使用germanString创建一个datetime对象,它实际上已经是我需要的格式,但是我无法将str与datetime对象进行比较。
如果我省略了strftime并使其简单解析(germanString),它将日期与YYYY-DD-MM
完全混合起来。
from dateutil.parser import parse
lastTimeUpdated = time.ctime(os.path.getctime('myPath/myFile.csv'))
lastTimeUpdated = parse(lastTimeUpdated).strftime('%d.%m.%Y, %H:%M')
print(lastTimeUpdated)
# 09.07.2017, 16:00
print(germanTimeString)
# 05.07.2017, 14:00 <---- is a String so far
HereIsTheProblemDate = parse(germanTimeString).strftime('%d.%m.%Y, %H:%M')
print(HereIsTheProblemDate)
# 07.05.2017, 14:00 <---- Mix up Day and Month
if HereIsTheProblemDate > lastTimeUpdate:
doAnything() #<--- obiously doesnt arrive here
我该怎么办?这样Germanstring就可以在不改变其值的情况下转换为日期时间对象了吗?
答案 0 :(得分:1)
您应该将其直接转换为getctime()
对象,而不是将datatime
返回的时间值转换为字符串。这可以使用datetime.fromtimestamp()
完成,如下所示:
from datetime import datetime
last_time_updated = datetime.fromtimestamp(os.path.getctime('myfile.csv'))
print(last_time_updated.strftime('%d.%m.%Y, %H:%M'))
然后,您可以将其正确地与另一个datetime
对象进行比较。通过避免字符串表示,您不必知道如何解析日期。
答案 1 :(得分:0)
如果查看documentation for dateutil
,您会发现parse
有一个dayfirst
参数。只需将其设置为True
。