我在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
你有什么建议吗?
答案 0 :(得分:25)
st
的{{1}}行的值st = datetime.strptime(st, '%A %d %B')
和01 01 2013 02:05
无法解析此问题。实际上,除了日期之外你还需要一个小时...你需要在你的主力上添加strptime
。
答案 1 :(得分:6)
你必须解析输入字符串的所有,你不能只忽略部分。
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']
字符串的部分(只分出时间),但这里确实没有意义,不能解决所有问题。先迈出一步。
答案 2 :(得分:5)
最佳答案是使用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())
答案 3 :(得分:1)
这很简单。我错过了json文件中日期的格式,所以我应该写:
st = datetime.strptime(st, '%A %d %B %H %M')
因为在json文件中日期如下:
"start": "Friday 06 December 02:05",
答案 4 :(得分:1)
timeobj = datetime.datetime.strptime(my_time, '%Y-%m-%d %I:%M:%S')
File "/usr/lib/python2.7/_strptime.py", line 335, in _strptime
data_string[found.end():])
ValueError: unconverted data remains:
就我而言,问题是输入日期字符串中有多余的空格。因此我使用了strip()
,它开始起作用。