Python strftime德语日期字符串

时间:2017-07-10 14:33:31

标签: python parsing datetime time strftime

我正在尝试更新我的一些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就可以在不改变其值的情况下转换为日期时间对象了吗?

2 个答案:

答案 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