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
,