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

Flask开发API时Pandas datetime转JSON后变为数字如何解决

Flask接口datetime类型转JSON变为时间戳问题解决方案

问题原因

  • pandas的DataFrame.to_json()方法对datetime类型的默认序列化策略是转换为毫秒级Unix时间戳,控制台打印DataFrame时看到的格式化日期是pandas为了可读性做的展示优化,并不影响序列化为JSON时的默认行为。
  • 后续的json.loads再json.dumps操作只是透传了已经转成数字的时间戳,没有做额外格式转换,因此接口最终返回数字格式的时间戳。

修复方案

方案1:修改to_json的日期序列化参数(最简方案)

调用to_json时指定date_format参数控制日期输出格式,比如要输出%Y-%m-%d格式的年月日,修改代码如下:

# 替换原有result = df.to_json(orient="records") 行
result = df.to_json(orient="records", date_format='%Y-%m-%d')

修改后可以直接返回result,不需要再做json.loads+json.dumps的多余序列化/反序列化操作,性能更好。

方案2:提前将日期列转为字符串格式

日期计算完成后,直接把datetime列转成指定格式的字符串,后续转JSON时会自动保留字符串格式:

df['New_date_start'] = df['New_date_start'] - pd.DateOffset(years=1) - pd.DateOffset(days=1)
# 新增以下行,将datetime列转成目标格式字符串
df['New_date_start'] = df['New_date_start'].dt.strftime('%Y-%m-%d')

该方案可完全自定义日期输出格式,适配不同业务需求。

可选优化建议

当前代码用json.dumps(parsed)返回响应不符合Flask最佳实践,建议改用Flask自带的jsonify方法,它会自动设置正确的Content-Type: application/json响应头,还会自动处理编码问题:

# 处理完数据后直接返回即可
return jsonify(parsed)

保留你现有配置的app.config['JSON_AS_ASCII'] = False即可避免中文乱码问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:39:02