pou*_*def 5 python datetime timedelta
这里发生了什么?
这预期:
>>> datetime.min - timedelta(days=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: date value out of range
Run Code Online (Sandbox Code Playgroud)
意外:
>>> datetime.min - timedelta(days=2)
datetime.datetime(1, 0, 255, 0, 0)
>>> datetime.min > (datetime.min - timedelta(days=2))
True
Run Code Online (Sandbox Code Playgroud)
在python中,当你从datetime.min中减去这些值意味着什么?他们代表什么日期?为什么有些情况不会触发OverflowError?
因为需要升级到Python 2.6或更高版本,从而修复了这个bug。
$ python2.5 -c 'import datetime; print(datetime.datetime.min - datetime.timedelta(days=2))'
0001-00-255 00:00:00
$ python2.6 -c 'import datetime; print(datetime.datetime.min - datetime.timedelta(days=2))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OverflowError: date value out of range
$ python2.7 -c 'import datetime; print(datetime.datetime.min - datetime.timedelta(days=2))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OverflowError: date value out of range
$ python3.3 -c 'import datetime; print(datetime.datetime.min - datetime.timedelta(days=2))'
Traceback (most recent call last):
File "<string>", line 1, in <module>
OverflowError: date value out of range
Run Code Online (Sandbox Code Playgroud)
您是否需要有人跟踪错误编号、补丁和 python-dev 讨论,或者这些信息对您来说足够了吗?
| 归档时间: |
|
| 查看次数: |
3777 次 |
| 最近记录: |