如何在Flask的jsonify输出中自定义日期格式为dd.mm.yyyyy?
解决DateofSPC字段格式问题的两种方法
方法一:针对性处理单个字段
在构建字典的循环中,对DateofSPC字段单独做格式化处理,适合仅需修改这一个字段的场景:
import datetime # 记得导入datetime模块 cursor.execute(sql) row_headers = [x[0] for x in cursor.description] json_data = [] for row in cursor.fetchall(): row_dict = dict(zip(row_headers, row)) # 检查字段是否存在且为date类型,然后格式化 if 'DateofSPC' in row_dict and isinstance(row_dict['DateofSPC'], datetime.date): row_dict['DateofSPC'] = row_dict['DateofSPC'].strftime('%d.%m.%Y') json_data.append(row_dict) return jsonify(json_data)
方法二:自定义JSON编码器全局处理
如果项目中有多处需要将datetime.date类型转为dd.mm.yyyy格式,可以自定义Flask的JSON编码器,实现全局统一处理:
from flask import Flask, jsonify import datetime import json # 自定义JSON编码器 class CustomJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.date): return obj.strftime('%d.%m.%Y') # 其他类型交给父类默认逻辑处理 return super().default(obj) # 将自定义编码器绑定到Flask应用 app = Flask(__name__) app.json_encoder = CustomJSONEncoder # 原数据处理代码无需修改 cursor.execute(sql) row_headers = [x[0] for x in cursor.description] json_data = [] for row in cursor.fetchall(): json_data.append(dict(zip(row_headers, row))) return jsonify(json_data)
说明:strftime('%d.%m.%Y')中,%d对应两位日期、%m对应两位月份、%Y对应四位年份,刚好匹配你需要的dd.mm.yyyy格式(你提到的yyyyy应为笔误,实际使用四位年份即可)。
内容的提问来源于stack exchange,提问作者Josef
相关产品推荐
相关产品推荐

