我在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']
字符串(分裂出去只是时间),但实在是没有点在这里,而不是当你可以只在一个步骤解析一切首位.
最好的答案是使用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())