如何在官方WindowsPython2.5上使用time>Year2038

2024-10-02 12:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在Windows上的官方python2.5是用Visual构建的工作室.Net2003,它使用32位时间,所以当年份大于2038年时,它只会给出例外。在

虽然这在Python2.6中已经修复(在VS2008中将时间更改为64位),但我还是希望使用2.5,因为已经为它编译了许多模块。在

所以我的问题是——有没有什么解决方案可以让我的程序轻松地处理2038年及以上的问题,同时仍然使用官方的Python2.5?例如一些预先制作的库,如"time64"或“longtime”等。。。在

请不要告诉我升级到2.6+或忘记错误-我有我的理由需要使它工作,这就是为什么我张贴在这里的问题。在


Tags: 模块程序官方windows错误时间解决方案中将
3条回答

我发现的最好的解决方案是获取Python2.5的源代码副本,然后使用默认时间为64位的编译器重新编译时间模块,例如VS2005或VS2008(也可以配置C运行时以防止并行问题)。在

我不想听起来老套,但为什么不:

  • 忘掉python2.5的Y2038错误吧
  • 在2038年之前,在将来的某个时候升级到python2.6

编辑: 澄清一下:(我是认真的-我不是故意开玩笑的)

从现在到2038年,您可以无限期地将Python升级到2.6(或更高版本)。也许在2012年。也许在2015年。也许在2037年。在

如果您知道应用程序中Python timestamp变量之间的差异(我不是一个Python用户),那么下面这些似乎是需要考虑的重要方面:

  • 持续保存哪些数据
  • 如何使用Python2.6恢复已持久化的Python2.5时间戳变量(大概它将“做正确的事情”)
  • 旧数据是否将以其持久形式存储足够长的时间以产生歧义(例如,“96”年在1950年到2049年之间被认为是明确的,但如果该数据一直保存到2230年,“96”可能是1996年、2096年或2196年)

如果答案是有利的,只需使用带有2038错误的常规时间戳。您必须将其与重新设计/重构的数量进行比较,以使您的应用程序使用备用时间戳(例如,数据库时间戳字符串或其他任何东西)。在

标准库中的datetime模块应该可以正常工作。您需要从模块time中得到什么,datetime没有提供的内容?在

相关问题 更多 >

    热门问题