当前位置: 首页 > 面试题库 >

Python | mktime溢出错误

翟浩穰
2023-03-14
问题内容

我在网上搜索过,找不到适合此问题的解决方案

OverflowError: mktime argument out of range

导致此异常的代码

 t = (1956, 3, 2, 0, 0, 0, 0, 0, 0)
 ser = time.mktime(t)

我想知道发生此异常的实际原因,有人说该日期不在有效范围内,但对我来说这没有任何意义,如果可以的话,可以是一个范围。是否取决于我们使用的系统。也想知道这个问题的一个好的解决方案。

谢谢。


问题答案:

time.mktime``mktime从平台的C库调用基础函数。例如,您发布的上述代码对我来说在Mac OS
X上运行得很好,尽管它返回的数字是负数,因为日期早于Unix时代。因此,原因是您的平台的mktime实现可能不支持Unix时代之前的日期。您可以使用Python的datetime模块构造datetime与上述日期相对应的对象,然后从datetime代表Unix纪元的另一个对象中减去该对象,然后使用计算出的timedelta对象获取自该纪元以来的秒数:

from datetime import datetime
epoch = datetime(1970, 1, 1)
t = datetime(1956, 3, 2)
diff = t-epoch
print diff.days * 24 * 3600 + diff.seconds

更新 :如果您使用的是Python 2.7或更高版本,则可以print diff.total_seconds()按照Chad
Miller的注释中的说明进行操作。



 类似资料:
  • 问题内容: 我想这样使用: 但这给了我错误: 我不明白为什么?我怎样才能解决这个问题?看来问题出在第三个数字上 问题答案: 就像fuglede所说,这里的问题是无法处理最大为的数字。尝试改用: 但是请注意,使用扩展精度存在某些怪癖。它可能无法在Windows上运行;您实际上并没有获得完整的128位精度;当数字通过纯python时,您可能会失去精度。您可以在此处阅读有关详细信息的更多信息。 对于大多

  • 问题内容: 下面给出的代码显示了运行时的Stackoverflow错误。但是,如果我使另一个类CarChange创建Car的对象,它将成功运行。我是一个初学者,请执行以下代码以了解在Java中进行向上转换的重要性。 问题答案: 一个stackoverflow通常意味着您有一个无限循环。 收到此消息的原因是因为您从testdrive方法调用驱动器,并且在该方法中再次调用drive。

  • mktime(将时间结构数据转换成经过的秒数) 相关函数 time,asctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 time_t mktime(strcut tm * timeptr); 函数说明 mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年 1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。 返回值

  • mktime 将时间结构数据转换成经过的秒数 相关函数 time,asctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 time_t mktime(strcut tm *timeptr); 函数说明 mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。 返回值

  • 我有一个类 Delete 我想使用 Gson 库将其转换为 json,但是当我转换它时,它会抛出 这是我的类 这里是枚举类DeleteStatus.scala 删除原因.scala 以下是我如何在Json转换 但它抛出以下异常 请帮助其中的错误

  • 问题是当我将页面收缩到某个点时, 元素的顶部溢出,奇怪的是底部没有溢出。说清楚一点,我不想让这两个都溢出来。 这里有一个指向它的JSFiddle链接:https://jsfidle.net/maep468x/1 您将看到,当您运行它并将结果窗口缩小到大约350px时, 元素开始溢出。 我已经尝试从.main-content规则中删除我的line-height和font-size属性,但它仍然溢出。