python中的最近时间戳

python中的最近时间戳,python,string,timestamp,integer,bisect,Python,String,Timestamp,Integer,Bisect,我有一个时间戳列表和一个关键时间戳来查找最近的时间戳,两者的格式都是'2019-11-22T11:37:52.338Z' 我尝试过这个解决方案,但由于我的时间戳在字符串中导致我出错。当我试着按如下所示打字时 def nearest(ts): s = sorted(timestamp_list) i = bisect_left(s, ts) return min(s[max(0, i-1): i+2], key=lambda t: abs(int(ts) - int(t))) 以ValueErr

我有一个时间戳列表和一个关键时间戳来查找最近的时间戳,两者的格式都是
'2019-11-22T11:37:52.338Z'

我尝试过这个解决方案,但由于我的时间戳在
字符串中
导致我出错。当我试着按如下所示打字时

def nearest(ts):
s = sorted(timestamp_list)
i = bisect_left(s, ts)
return min(s[max(0, i-1): i+2], key=lambda t: abs(int(ts) - int(t)))
ValueError结束:以10为基数的int()的文本无效:“2019-11-22T11:37:52.338Z”

有关如何克服此错误的任何建议?

您可以尝试从
datetime
模块中的
strtime()
将字符串转换为datetime对象:

from datetime import datetime

ts = '2019-07-22T11:37:52.338Z'
datetime_object = datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%fZ')

print(datetime_object)
输出:

2019-07-22 11:37:52.338000


下面是完整的示例:

从对分导入左对分
从日期时间导入日期时间
这张单子的长度是[2010-11-22T11:37:52.338Z',2018-11-22T11:37:52.338Z',2017-11-22T11:37:52.338Z']
ts_列表=[datetime.STRTIME(ts,%Y-%m-%dT%H:%m:%S.%fZ'),用于ts_列表中的ts]
def(ts):
s=已排序(ts_列表)
i=左二等分(s,ts)
返回最小值(s[max(0,i-1):i+2],键=λt:abs(ts-t))
ts_str='2019-07-22T11:37:52.338Z'
ts=datetime.strtime(ts_str,“%Y-%m-%dT%H:%m:%S.%fZ”)
打印(最近的(ts))

感谢您的快速解决方案。我试图回到最接近的时间戳的原始格式,我进一步使用它进行比较。我尝试了这个
near_ts=near_ts.strftime(“%Y-%m-%dT%H:%m:%S.%f')[:-3]+('z')
但是当我尝试将它与未更改的时间戳进行比较时,它似乎不起作用。我检查了两个ts的类型,它们似乎是相同的
str
。有什么建议我哪里出错了吗?啊,好的,明白了。用“z”代替“z”的小错误。