Ответ 1
Значение st
в строке st = datetime.strptime(st, '%A %d %B')
похоже на 01 01 2013 02:05
, а strptime
не может проанализировать это. В самом деле, вы получаете час в дополнение к дате... Вам нужно добавить %H:%M
в свой strptime.
У меня есть несколько дат в json файлах, и я ищу тех, кто соответствует сегодняшней дате:
import os
import time
from datetime import datetime
from pytz import timezone
input_file = file(FILE, "r")
j = json.loads(input_file.read().decode("utf-8-sig"))
os.environ['TZ'] = 'CET'
for item in j:
lt = time.strftime('%A %d %B')
st = item['start']
st = datetime.strptime(st, '%A %d %B')
if st == lt :
item['start'] = datetime.strptime(st,'%H:%M')
У меня была ошибка:
File "/home/--/--/--/app/route.py", line 35, in file.py
st = datetime.strptime(st, '%A %d %B')
File "/usr/lib/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 02:05
Есть ли у вас предложения?
Значение st
в строке st = datetime.strptime(st, '%A %d %B')
похоже на 01 01 2013 02:05
, а strptime
не может проанализировать это. В самом деле, вы получаете час в дополнение к дате... Вам нужно добавить %H:%M
в свой strptime.
Вам нужно разобрать всю входную строку, вы не можете просто игнорировать детали.
from datetime import date, datetime
for item in j:
st = datetime.strptime(item['start'], '%A %d %B %H:%M')
if st.date() == date.today():
item['start'] = st.time()
Здесь мы сравниваем дату с сегодняшней датой, используя больше объектов datetime
вместо того, чтобы пытаться использовать строки.
Альтернативой является передача только части строки item['start']
(расщепление только времени), но здесь действительно нет смысла, а не тогда, когда вы можете просто разобрать все на первом шаге.
Ну это было очень просто. Мне не хватало формат даты в json файле, поэтому я должен написать:
st = datetime.strptime(st, '%A %d %B %H %M')
потому что в json файле дата была такой:
"start": "Friday 06 December 02:05",
Лучший ответ - использовать from dateutil import parser
.
использование:
from dateutil import parser
datetime_obj = parser.parse('2018-02-06T13:12:18.1278015Z')
print datetime_obj
# output: datetime.datetime(2018, 2, 6, 13, 12, 18, 127801, tzinfo=tzutc())