时区

简介

时区的概念源自 Django,但也有所不同。有两个配置项 use_tztimezone 影响 tortoise 中的时区,可以在调用 Tortoise.init 时设置。在不同的 DBMS 中也有不同的行为。

use_tz

当设置 use_tz = True 时,tortoise 将始终在数据库中存储 UTC 时间,无论设置什么 timezone。并且 MySQL 使用字段类型 DATETIME(6)PostgreSQL 使用 TIMESTAMPTZSQLite 使用 TIMESTAMP 生成模式。对于 TimeFieldMySQL 使用 TIME(6)PostgreSQL 使用 TIMETZSQLite 使用 TIME

timezone

无论数据库的 timezone 是什么,timezone 决定从数据库中选择 DateTimeFieldTimeField 时的 timezone。你应该使用 tortoise.timezone.now() 获取感知时间,而不是本地时间 datetime.datetime.now()

参考

tortoise.timezone.get_default_timezone()[source]

返回默认时区作为 tzinfo 实例。

这是 Tortoise 配置定义的时区。

返回类型:

tzinfo

tortoise.timezone.get_timezone()[source]

从 Tortoise 配置中获取环境设置的时区。

返回类型:

str

tortoise.timezone.get_use_tz()[source]

从 Tortoise 配置中获取环境设置的 use_tz。

返回类型:

bool

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()。

本地时间由当前时区定义,除非指定了另一个时区。

引发:

ValueError – 当 value 为朴素的 datetime 时

返回类型:

datetime

tortoise.timezone.make_aware(value, timezone=None, is_dst=None)[source]

使给定时区中的朴素 datetime.datetime 已知。

引发:

ValueError – 当 value 不是朴素的 datetime 时

返回类型:

datetime

tortoise.timezone.make_naive(value, timezone=None)[source]

使给定时区中的感知 datetime.datetime 变为朴素。

引发:

ValueError – 当 value 为朴素的 datetime 时

返回类型:

datetime

tortoise.timezone.now()[source]

返回感知的 datetime.datetime,具体取决于 use_tz 和 timezone。

返回类型:

datetime