gpt4 book ai didi

python calendar.timegm 实现?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:58 25 4
gpt4 key购买 nike

从 $PYTHONHOME/lib/python2.7/calendar.py 中,timegm 定义为

EPOCH = 1970
_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal()


def timegm(tuple):
"""Unrelated but handy function to calculate Unix timestamp from GMT."""
year, month, day, hour, minute, second = tuple[:6]
days = datetime.date(year, month, 1).toordinal() - _EPOCH_ORD + day - 1
hours = days*24 + hour
minutes = hours*60 + minute
seconds = minutes*60 + second
return seconds

是否有任何原因导致天数不计算为:

days = datetime.date(year, month, day).toordinal() - _EPOCH_ORD

有人能想到前面的表达式会被破坏的情况吗?

最佳答案

datetime.date(year, month, day).toordinal()

“范围检查”(与年和月组合)是否是有效datetime.date的一部分。

datetime.date(year, Month, 1) 不需要,或者更确切地说,只要求 yearmonth 有效。

显然,某些用户正在利用此“功能”(不检查日期),并且为了向后兼容(与 Python2.2!),开发人员保留了此行为。请参阅 Raymond Hettinger 在 commit #27881 中的评论.

PS。您可以通过运行

calendar.py 中找到更改此行的提交
hg blame cpython/Lib/calendar.py 

(前提是您已经 hg 克隆CPython 存储库)。

10940: def timegm(tuple):
11691: """Unrelated but handy function to calculate Unix timestamp from GMT."""
11691: year, month, day, hour, minute, second = tuple[:6]
27881: days = datetime.date(year, month, 1).toordinal() - _EPOCH_ORD + day - 1

然后,要查找有关提交 #27881 的更多信息,您可以搜索 http://hg.python.org/

关于python calendar.timegm 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12306221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com