Python 无法将日期时间转换为1970年之前的时间戳
我试图将datetime对象转换为时间戳,以便将时间戳保存到json文件中,然后将该时间戳转换为datetime对象 在我将年份设置为大于1970年之前,这种方法一直很有效,但当年份减少时,出现了一个异常,称为Python 无法将日期时间转换为1970年之前的时间戳,python,python-3.x,datetime,timestamp,Python,Python 3.x,Datetime,Timestamp,我试图将datetime对象转换为时间戳,以便将时间戳保存到json文件中,然后将该时间戳转换为datetime对象 在我将年份设置为大于1970年之前,这种方法一直很有效,但当年份减少时,出现了一个异常,称为OSError:[Errno 22]无效参数 导入日期时间 cd=datetime.datetime.strtime(“1965-12-25,%Y-%m-%d”) datetime.datetime.timestamp(cd)#此行给出错误信息 回溯(最近一次呼叫最后一次): 文件“”,
OSError:[Errno 22]无效参数
导入日期时间
cd=datetime.datetime.strtime(“1965-12-25,%Y-%m-%d”)
datetime.datetime.timestamp(cd)#此行给出错误信息
回溯(最近一次呼叫最后一次):
文件“”,第3行,在
OSError:[Errno 22]参数无效
我使用的是Windows10操作系统。是否存在将日期时间转换为时间戳的例外情况或其他方式?您可以从历元(1970-1-1)计算负时间戳作为
timedelta
:
…另一种情况是
dt = datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=ts)
print(dt)
>>> 1965-12-25 00:00:00
相关的:
cd.timestamp()
而不是datetime.datetime.timestamp(cd)
,但是,这只是“本模块中的函数可能无法处理纪元之前或遥远未来的日期和时间”的一个旁白
import datetime
cd = datetime.datetime.strptime("1965-12-25", "%Y-%m-%d")
ts = (cd-datetime.datetime(1970,1,1)).total_seconds()
print(ts)
>>> -126835200.0
dt = datetime.datetime(1970, 1, 1) + datetime.timedelta(seconds=ts)
print(dt)
>>> 1965-12-25 00:00:00