<p><a href="https://stackoverflow.com/a/62294569/5987">Joseph Sible-Reinstate Monica</a>在解释解决问题的步骤方面做得很好。但答案是缺少细节和代码,所以我想我会帮你填写</p>
<p>如果时间戳编号与日期/时间之间存在线性关系,则只需对每个编号进行两次采样即可建立关系。有了更多,你就有可能测试解决方案,并确信这种关系确实是线性的</p>
<pre><code>>>> import datetime as dt
>>> date_list=[(1264604283246383104, dt.datetime(2020,5,24, 13,8)),
(1266445459956158467, dt.datetime(2020,5,29, 15,5)),
(1269744490329358337, dt.datetime(2020,6,7, 17,34)),
(1270363071710715905, dt.datetime(2020,6,9, 10,32))]
>>> freq = (date_list[-1][0] - date_list[0][0]) / (date_list[-1][1] - date_list[0][1]).total_seconds()
>>> freq
4194188417.185807
>>> epoch = date_list[0][1] - dt.timedelta(seconds=date_list[0][0] / freq)
>>> epoch
datetime.datetime(2010, 11, 3, 19, 23, 34, 828853)
>>> def stamp_to_dt(stamp):
return epoch + dt.timedelta(seconds=stamp/freq)
>>> for stamp, date in date_list:
print(stamp, date, stamp_to_dt(stamp))
1264604283246383104 2020-05-24 13:08:00 2020-05-24 13:08:00
1266445459956158467 2020-05-29 15:05:00 2020-05-29 15:04:22.832110
1269744490329358337 2020-06-07 17:34:00 2020-06-07 17:33:54.641731
1270363071710715905 2020-06-09 10:32:00 2020-06-09 10:32:00
</code></pre>
<p>如您所见,函数输出与预期结果非常接近。它精确地匹配第一个和最后一个,因为这两个是用来计算转换因子的</p>