Python 无法将日期时间转换为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)#此行给出错误信息 回溯(最近一次呼叫最后一次): 文件“”,

我试图将datetime对象转换为时间戳,以便将时间戳保存到json文件中,然后将该时间戳转换为datetime对象

在我将年份设置为大于1970年之前,这种方法一直很有效,但当年份减少时,出现了一个异常,称为
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

相关的:


它将给出一个负值时间戳0(或1)在1970年1月1日00:00:00,那么在此之前时间戳并不存在date@Christophe您可以使用该日期的负偏移量来表示以前的日期…Sunil,您应该真正使用
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