Python strftime Немецкая строка даты

Я пытаюсь обновить некоторые из моих файлов CSV и позже в моей базе данных. Кажется, strftime перепутать день за месяцем. Я в Германии и мы пишем нашу дату DD/MM/YYYY вместо MM/DD/YYYY,

Как сделать объект datetime из germanString, он на самом деле уже находится в нужном мне формате, но я не могу сравнить 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

Что мне нужно сделать? Чтобы немецкая строка была преобразована в объект datetime без изменения его значений?

2 ответа

Вместо преобразования значения времени, возвращенного из 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 объект. Избегая строкового представления, вам не нужно разбираться, как разбирать дату.

Если вы посмотрите на документацию дляdateutil ты это видишь parse имеет dayfirst параметр. Просто установите это True,

Другие вопросы по тегам