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

无法将保存的datetime64转回timestamp及datetime.datetime.now()格式求助

解决datetime64与时间戳、datetime.datetime的转换问题

错误原因

你遇到的报错核心问题是字符串类型和numpy.datetime64类型无法直接运算:row[0]是字符串(<U18),而numpy.datetime64(0, "s")是datetime64类型,两者不能直接相减。

修复当前硬编码代码的方法

你的row[0]是微秒级时间戳的字符串形式,先把它转成数值类型再处理即可:

方法1:直接转成datetime.datetime对象

import numpy as np
import datetime

row = []
row.append("1681903801863912.0")
# 先把字符串转成微秒级整数时间戳
ts_micro = int(float(row[0]))
# 转成datetime.datetime格式
dt = datetime.datetime.fromtimestamp(ts_micro / 1000000)
print(dt)

方法2:转成numpy.datetime64后再处理

import numpy as np
import datetime

row = []
row.append("1681903801863912.0")
# 字符串转微秒级数值
ts_micro = int(float(row[0]))
# 构造numpy.datetime64对象
date64 = np.datetime64(ts_micro, "us")
# 转成秒级时间戳
ts_second = (date64 - np.datetime64(0, "s")) / np.timedelta64(1, "s")
print(ts_second)
# 转成datetime.datetime格式
dt = date64.astype(datetime.datetime)
print(dt)

规范保存与还原流程

从你之前的转换代码来看,建议保存时直接存储数值类型的时间戳或标准datetime64格式,避免转成字符串后出错:

正确的保存流程(从datetime.datetime到可存储格式)

import numpy as np
import datetime

# 获取当前时间并转成datetime64
date64 = np.datetime64(datetime.datetime.now())
# 转成微秒级时间戳(数值类型,方便存储)
ts_micro = (date64 - np.datetime64(0, "us")) / np.timedelta64(1, "us")
# 存入列表(或其他存储介质)
saved_data = [ts_micro]

正确的还原流程

# 从存储的数值还原
ts_micro = saved_data[0]
# 转成numpy.datetime64
date64 = np.datetime64(int(ts_micro), "us")
# 转成datetime.datetime
dt = date64.astype(datetime.datetime)
print(dt)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:20