时间戳需转换为Excel日期格式才能正确显示和计算。Python时间戳从1970年1月1日(UTC)起算,而Excel以1900年1月1日为起点,两者相差25569天。因此,将秒级时间戳转为Excel日期值公式为:(timestamp / 86400) + 25569;毫秒级则先除以1000或整体除以86400000后再加25569。注意时区问题,推荐使用UTC时间避免本地时区偏差。若用pandas写入Excel(如df.to_excel),可通过pd.to_datetime(timestamp, unit='s')自动转换为Timestamp对象,配合openpyxl或xlsxwriter引擎可识别为日期类型,支持排序、计算等操作。若手动在Excel中处理,确保数值已加上25569偏移,并设置单元格格式为日期形式即可正常显示。验证时可检查时间戳1672531200对应Excel值约44927,即2023-01-01 00:00:00 UTC。关键在于对齐时间起点与单位换算,掌握25569和86400两个核心数值即可。

Python3生成的时间戳是整数或浮点数(单位:秒或毫秒),Excel默认不识别这种格式,需转换为Excel可读的日期时间才能正常显示和计算。
时间戳转Excel可识别的日期时间
Excel的日期系统以1900年1月1日为起点(Windows默认),1天 = 1个数值单位。Python时间戳(Unix时间,从1970-01-01 00:00:00 UTC起算)需偏移并换算:
- 秒级时间戳 → Excel日期数值:`(timestamp + 25569)`(25569是1970-01-01在Excel中的序列号)
- 毫秒级时间戳 → 先除以1000,再加25569;或直接 `(timestamp / 86400000) + 25569`
- 注意时区:Python中若用
time.time()或datetime.now().timestamp(),结果为本地时区对应的时间戳;建议统一转为UTC后再处理,避免Excel中日期偏移
用pandas写入Excel时自动处理时间戳
推荐用pandas配合openpyxl或xlsxwriter引擎,它能自动将datetime对象渲染为Excel日期格式:
- 先用
pd.to_datetime(timestamp, unit='s')把时间戳转为pandas Timestamp - 再写入Excel:
df.to_excel('out.xlsx', engine='openpyxl') - openpyxl会把datetime列识别为日期类型,双击单元格可见正确格式,且支持排序、求差等运算
Excel中手动验证或反向转换
如果已把时间戳数值写入Excel(如直接写入1672531200),想让它显示为日期:
立即学习“Python免费学习笔记(深入)”;
- 选中该列 → 右键“设置单元格格式” → 选择“日期”或“自定义”(如
yyyy-mm-dd hh:mm:ss) - 若显示为一串大数字(如44927),说明数值已按Excel序列号存储,只需改格式即可显示日期
- 若仍显示错误,检查是否漏加25569偏移——比如1672531200秒对应2023-01-01 00:00:00 UTC,在Excel中应为
1672531200 + 25569 = 1672556769,再除以86400得Excel日期值≈44927.0
基本上就这些。关键不是时间戳本身,而是对齐时间起点和单位换算。用pandas写入最省心,手动处理时记住25569和86400这两个数就够了。











