You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制FastAPI返回指定格式的DateTime?

解决FastAPI返回自定义日期格式的问题

可以强制FastAPI返回仅包含日期+时分秒的格式(如YYYY-MM-DD HH:MM:SS),下面是两种实用的实现方式:

方法一:为Pydantic模型字段自定义序列化逻辑

在响应模型中,针对datetime字段编写专属的序列化函数,精准控制输出格式:

from datetime import datetime
from pydantic import BaseModel, field_serializer

class CustomResponse(BaseModel):
    update_time: datetime

    @field_serializer('update_time')
    def format_datetime(self, value: datetime) -> str:
        return value.strftime("%Y-%m-%d %H:%M:%S")

当接口返回该模型实例时,update_time字段会自动按照指定格式输出。

方法二:全局配置自定义JSON编码器

如果需要让所有接口的datetime字段统一使用该格式,可以替换FastAPI默认的JSON编码器:

from datetime import datetime
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from typing import Any

def custom_encoder(obj: Any) -> Any:
    if isinstance(obj, datetime):
        return obj.strftime("%Y-%m-%d %H:%M:%S")
    return jsonable_encoder(obj)

app = FastAPI(json_encoder=custom_encoder)

@app.get("/demo")
def return_demo_data():
    return {"create_time": datetime.now()}

这种方式无需逐个修改模型,所有返回的datetime类型都会自动套用指定格式。

注意:如果你的datetime对象带有时区信息,建议先转换为目标时区(如UTC或本地时间)后再格式化,避免出现时间偏差。

内容的提问来源于stack exchange,提问作者Siqueler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:20:32