可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have some dates in a json files, and I am searching for those who corresponds to today's date :
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')
I had an error like this :
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
Do you have any suggestions ?
回答1:
The value of st
at st = datetime.strptime(st, '%A %d %B')
line something like 01 01 2013 02:05
and the strptime
can't parse this. Indeed, you get an hour in addition of the date... You need to add %H:%M
at your strptime.
回答2:
You have to parse all of the input string, you cannot just ignore parts.
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()
Here, we compare the date to today's date by using more datetime
objects instead of trying to use strings.
The alternative is to only pass in part of the item['start']
string (splitting out just the time), but there really is no point here, not when you could just parse everything in one step first.
回答3:
Best answer is to use the from dateutil import parser
.
usage:
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())
回答4:
Well it was very simple. I was missing the format of the date in the json file, so I should write :
st = datetime.strptime(st, '%A %d %B %H %M')
because in the json file the date was like :
"start": "Friday 06 December 02:05",