You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将大整数时间戳转换为datetime格式以解决Matplotlib轴溢出错误

解决方案:纳秒级时间戳转Datetime适配Matplotlib X轴

核心问题原因

你拿到的是纳秒级时间戳(示例值为19位整数,对应1970年以来的纳秒数),Matplotlib在处理这类超大整数时会触发底层类型转换溢出——它默认期望的是秒/毫秒级小整数,或是直接的datetime对象。

三种可行解决方法

方法1:转成Python datetime对象(最直接)

把纳秒时间戳除以1e9转成秒级浮点数,再用datetime.fromtimestamp生成datetime对象,Matplotlib原生支持这类对象作为X轴:

import datetime

timestamp_list = [1642636800000000000, 1649203200000000000, 1649462400000000000]
# 转换为datetime列表
datetime_x = [datetime.datetime.fromtimestamp(ts / 1e9) for ts in timestamp_list]

# 绘图示例
import matplotlib.pyplot as plt
plt.plot(datetime_x, your_y_data)
plt.xticks(rotation=45)
plt.show()

方法2:用numpy datetime64类型(适配原numpy数组场景)

如果最初是从numpy datetime数组转成的列表,不如直接用numpy将时间戳转回datetime64[ns]类型,Matplotlib对numpy的时间类型支持很好:

import numpy as np

timestamp_list = [1642636800000000000, 1649203200000000000]
# 转成numpy int64数组,再转为纳秒级datetime64
ts_array = np.array(timestamp_list, dtype=np.int64)
dt_array = ts_array.astype('datetime64[ns]')

# 直接用numpy datetime数组绘图
plt.plot(dt_array, your_y_data)
plt.xticks(rotation=45)
plt.show()

方法3:转成秒级整数+手动设置X轴格式

如果坚持用整数作为X轴数据,把纳秒戳整除10**9转成秒级整数,再通过Matplotlib的日期格式化工具把X轴显示为datetime格式:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

timestamp_list = [1642636800000000000, 1649203200000000000]
# 转成秒级整数
seconds_x = [ts // 10**9 for ts in timestamp_list]

# 绘图并设置X轴格式
plt.plot(seconds_x, your_y_data)
# 设置日期显示格式
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
# 设置刻度间隔(比如每30天一个刻度)
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=30))
plt.xticks(rotation=45)
plt.show()

内容的提问来源于stack exchange,提问作者erfanvahdat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:12:36