我正在尝试更新一些 csv 文件,稍后再更新我的数据库。看来每个月的 strftime 都会混淆一天。我在德国,我们写的是日期 DD/MM/YYYY
而不是 MM/DD/YYYY
。
如何从 germanString 中创建 datetime 对象,它实际上已经是我需要的格式,但我无法将 str 与 datetime 对象进行比较。
如果我省略 strftime 并使其简单地 parse(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 转换为日期时间对象而不更改其值?
最佳答案
您不应将 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
对象正确比较。通过避免使用字符串表示,您不必弄清楚如何解析日期。
关于Python strftime 德语日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014845/