gpt4 book ai didi

python - 使用 Flask 的 jsonify 时,将 datetime.date 保留为 'yyyy-mm-dd' 格式

转载 作者:太空狗 更新时间:2023-10-29 17:23:11 24 4
gpt4 key购买 nike

出于某种原因,jsonify 函数正在将我的 datetime.date 转换为看似 HTTP 日期的内容。使用 jsonify 时如何将日期保持为 yyyy-mm-dd 格式?

test_date = datetime.date(2017, 4, 27)
print(test_date) # 2017-04-27
test_date_jsonify = jsonify(test_date)
print(test_date_jsonify.get_data(as_text=True)) # Thu, 27 Apr 2017 00:00:00 GMT

正如评论中所建议的,使用 jsonify(str(test_date)) 返回所需的格式。但是,请考虑以下情况:

test_dict = {"name": "name1", "date":datetime.date(2017, 4, 27)}
print(test_dict) # {"name": "name1", "date":datetime.date(2017, 4, 27)}

test_dict_jsonify = jsonify(test_dict)
print(test_dict_jsonify.get_data(as_text=True)) # {"date": "Thu, 27 Apr 2017 00:00:00 GMT", "name": "name1"}

test_dict_jsonify = jsonify(str(test_dict))
print(test_dict_jsonify.get_data(as_text=True)) # "{"date": datetime.date(2017, 4, 27), "name": "name1"}"

在这种情况下,str() 解决方案不起作用。

最佳答案

正在关注 this snippet你可以这样做:

from flask.json import JSONEncoder
from datetime import date


class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
try:
if isinstance(obj, date):
return obj.isoformat()
iterable = iter(obj)
except TypeError:
pass
else:
return list(iterable)
return JSONEncoder.default(self, obj)

app = Flask(__name__)
app.json_encoder = CustomJSONEncoder

路线:

import datetime as dt

@app.route('/', methods=['GET'])
def index():
now = dt.datetime.now()
return jsonify({'now': now})

关于python - 使用 Flask 的 jsonify 时,将 datetime.date 保留为 'yyyy-mm-dd' 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com