Python 中已弃用 datetime.utcnow()和datetime.utcfromtimestamp()函数;使用时区感知的日期时间代替。
这是新的 Python 3.12 版本的发行说明,弃用部分中的一项。
utcnow() 和 utcfromtimestamp() 有什么问题?
Python 维护者发现的问题来自于这些函数返回的 "幼稚 "日期时间对象。
所谓 "幼稚 "日期时间对象是指没有时区的对象,这意味着它只能在时区无关紧要或已经预先知道的情况下使用。
这与 "感知 "日期时间对象形成了鲜明对比,"感知aware "日期时间对象明确附加了时区。
- utcnow():自 3.12 版起已弃用:使用带有UTC的 datetime.now() 代替 。
- utcfromtimestamp():自 3.12 版起已弃用:使用带有UTC的 datetime.fromtimestamp() 代替 。
代码:
from datetime import datetime, timezone |
结果(运行时间是2023-11-18):
2023-11-18 11:36:35.137639+00:00 |
结果中:
- 第一行和第二行显示的是可感知的日期时间实例,后缀 +00:00 表示时区为 00:00 或 UTC。
- 第三行和第四行显示的是不含时区的抽象时间戳,与废弃函数返回的时间戳完全兼容。