我正在进行编程,其中我必须在给定日期上添加N天,其中N可以达到999999999,并且给定日期在使用Python的3000年之前。除了datetime
之外,还有其他库可以做到这一点吗?
我知道Java有一个可以针对N值较大的库,但是对于Python,我只找到了一个名为datetime
的库,但是它的问题是1.对于N值较大的情况,它太慢了和2.由于N可能高达1000000000,因此日期值将超出范围。
答案 0 :(得分:1)
datetime.date
一直支持到9999年年底。这似乎足够...但是10 ^ 9天超过2.5 百万年。
另一个处理时间的Python库称为time
,主要用于C时间函数。
我发现time.ctime()
以秒为单位获取时间(参数默认为该格式的当前时间-time.time()
),并输出默认格式的时间字符串。
您可以使用time.strptime()
解析给定时间以获得时间结构,然后使用time.mktime()
将其转换为纪元秒。然后将您的N天添加为秒。瞧!您想要的时间距纪元还有一秒钟。
那样,lib只处理解析和转换,而数学是在整数上完成的。
测试当前时间(不解析),N = 10 ^ 9:
>>> test = time.time()
>>> print(test)
1561378571.5154927
>>> time.ctime(test)
'Mon Jun 24 14:16:11 2019'
>>> test_after_N = test + 10**9 * 24 * 3600
>>> print(test_after_N)
86401561378571.52
>>> time.ctime(test_after_N)
'Sun Jun 27 13:16:11 2739926'
如果需要其他格式,则可能要解析或剪切输出,或者查找是否可以更改默认格式。
可在此处找到模块文档-https://docs.python.org/3/library/time.html