时区¶
简介¶
时区的概念源自 Django,但也有所不同。有两个配置项 use_tz 和 timezone 影响 tortoise 中的时区,可以在调用 Tortoise.init 时设置。在不同的 DBMS 中也有不同的行为。
use_tz¶
当设置 use_tz = True 时,tortoise 将始终在数据库中存储 UTC 时间,无论设置什么 timezone。并且 MySQL 使用字段类型 DATETIME(6),PostgreSQL 使用 TIMESTAMPTZ,SQLite 使用 TIMESTAMP 生成模式。对于 TimeField,MySQL 使用 TIME(6),PostgreSQL 使用 TIMETZ,SQLite 使用 TIME。
timezone¶
无论数据库的 timezone 是什么,timezone 决定从数据库中选择 DateTimeField 和 TimeField 时的 timezone。你应该使用 tortoise.timezone.now() 获取感知时间,而不是本地时间 datetime.datetime.now()。
参考¶
- tortoise.timezone.get_default_timezone()[source]¶
返回默认时区作为 tzinfo 实例。
这是 Tortoise 配置定义的时区。
- 返回类型:¶
tzinfo
- tortoise.timezone.is_aware(value)[source]¶
确定给定的 datetime.datetime 或 datetime.time 是否已知。
该概念在 Python 文档中定义:https://docs.pythonlang.cn/library/datetime.html#datetime.tzinfo
假设 value.tzinfo 为 None 或正确的 datetime.tzinfo,则 value.utcoffset() 将实现适当的逻辑。
- 返回类型:¶
bool
- tortoise.timezone.is_naive(value)[source]¶
确定给定的 datetime.datetime 或 datetime.time 是否是朴素的。
该概念在 Python 文档中定义:https://docs.pythonlang.cn/library/datetime.html#datetime.tzinfo
假设 value.tzinfo 为 None 或正确的 datetime.tzinfo,则 value.utcoffset() 将实现适当的逻辑。
- 返回类型:¶
bool
-
tortoise.timezone.localtime(value=
None
, timezone=None
)[source]¶ 将已知的 datetime.datetime 转换为本地时间。
仅允许已知的 datetime。当省略 value 时,它默认为 now()。
本地时间由当前时区定义,除非指定了另一个时区。
-
tortoise.timezone.make_aware(value, timezone=
None
, is_dst=None
)[source]¶ 使给定时区中的朴素 datetime.datetime 已知。