SrT*_*Tan 4 python datetime mongodb python-3.x pydantic
我有一个模型,其中定义了日期时间类型字段,如下所示:
class DamBaseModel(BaseModel):
class Config:
allow_population_by_field_name = True
use_enum_values = True
arbitrary_types_allowed = True
json_encoders = {
ObjectId: str,
datetime: lambda d: d.isoformat
}
Run Code Online (Sandbox Code Playgroud)
定义的Model如下:
class Message(DamBaseModel):
created_datetime: datetime = Field(default_factory=datetime.now)
Run Code Online (Sandbox Code Playgroud)
插入 MongoDb 的数据是:
{ "created_datetime" : ISODate("2022-08-22T12:02:59.546Z") }
Run Code Online (Sandbox Code Playgroud)
但我目前面临的问题是在客户端级别接收的数据格式如下:
{ "created_datetime": "Mon, 22 Aug 2022 12:02:59 GMT" }
Run Code Online (Sandbox Code Playgroud)
我只是从数据库中获取数据并直接投影,无需任何格式化。有关如何在投影数据时指定本地时区的任何帮助吗?
Pydantic V2 现在支持时区感知时间戳:
from pydantic import AwareDatetime, TypeAdapter
dt = AwareDatetime
ta = TypeAdapter(dt)
# validate UTC timestamp
ta.validate_python("2022-08-22T12:02:59.546Z")
# Validate timestamp with timezone
ta.validate_python("2022-08-22T12:02:59.546+00:00")
Run Code Online (Sandbox Code Playgroud)
我知道这是一个老问题,但我想为任何可能偶然发现这个帖子的人发布一个答案。
截至目前 - 2023 年 2 月 22 日 - datetime
pydantic 不支持时区感知。
但此功能正处于开发的最新阶段。请参阅以下链接了解最新进展更新:
https://github.com/pydantic/pydantic/discussions/3477#discussioncomment-4017542 https://github.com/pydantic/pydantic/pull/4812
更新(2023 年 6 月 26 日)
根据我上面提到的 Pull request 中的最新评论,这个功能要等到 Pydantic v2 出来之后才能使用。
归档时间: |
|
查看次数: |
6711 次 |
最近记录: |