跳到内容

call-datetime-utcnow (DTZ003)

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

作用

检查 datetime.datetime.utcnow() 的使用情况。

为什么这不好?

Python datetime 对象可以是 naive 的(未包含时区信息)或 timezone-aware 的(包含时区信息)。虽然 aware 对象表示一个特定的时间点,但 naive 对象没有包含足够的信息来明确地定位自身与其他 datetime 对象的相对位置。由于这可能导致错误,因此建议始终使用 timezone-aware 对象。

datetime.datetime.utcnow() 返回一个 naive 的 datetime 对象;相反,请使用 datetime.datetime.now(tz=...) 来创建一个 timezone-aware 对象。

示例

import datetime

datetime.datetime.utcnow()

建议改为

import datetime

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

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

import datetime

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

参考