跳到内容

call-date-today (DTZ011)

添加于 v0.0.188 · 相关议题 · 查看源码

派生自 flake8-datetimez 代码检查器。

作用

检查 datetime.date.today() 的使用。

为什么这不好?

Python 的 date 对象是“原生(naive)”的,即不包含时区信息。虽然感知(aware)对象代表特定的时间点,但原生对象不包含足够的上下文信息,无法在相对于其他日期时间对象时明确其自身位置。由于这可能导致错误,建议始终使用包含时区的对象。

datetime.date.today 返回一个不考虑时区的原生 date 对象。建议改用 datetime.datetime.now(tz=...).date() 来创建包含时区的对象,并获取其日期部分。

示例

import datetime

datetime.date.today()

建议改为

import datetime

datetime.datetime.now(tz=datetime.timezone.utc).date()

或者,对于 Python 3.11 及更高版本

import datetime

datetime.datetime.now(tz=datetime.UTC).date()

参考