当前位置: 首页 > 面试题库 >

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

宰父淳
2023-03-14
问题内容

由于某种原因,该jsonify函数将my转换datetime.date为似乎是HTTP日期的日期。使用时如何保持日期yyyy-mm- dd格式jsonify

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

如注释中所建议,using 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()解决方案不起作用。


问题答案:

按照以下代码片段,您可以执行以下操作:

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})


 类似资料:
  • 出于某种原因,< code>jsonify函数正在将我的< code>datetime.date转换为看起来像HTTP日期的内容。使用< code>jsonify时,如何保持< code>yyyy-mm-dd格式的日期? 正如注释中所建议的,使用< code > JSON ify(str(test _ date))返回所需的格式。但是,请考虑以下情况: 在这种情况下,< code>str()解决方

  • 问题内容: 我有一个格式。我希望它采用以下格式 以下是我尝试进行此转换的示例: 我得到的输出仍然不是格式。 请让我知道如何格式化从到 问题答案: 是自Unix纪元(1970年1月1日UTC:00:00)以来的毫秒数的容器。 它没有格式的概念。 输出…

  • 问题内容: 好吧,我正在使用a进行详细说明,因为我从数据库中获取了一个对象,并且从同一对象中获得了一个变量“ fecha”(日期),因此我得到了a ,因此formatt以毫秒为单位,但是我不想出现毫秒。因此,我需要将我从数据库中收到的日期格式化为没有毫秒的新日期。 这是对象Factura: 在映射到数据库的xml中,我具有该变量“ fecha”的代码: 在数据库中,该列为。 当我从数据库中获取一个

  • 问题内容: 我正在尝试从转换日期。我已经使用了mktime()函数和其他函数,但是我似乎无法使其工作。我已经成功地将原始日期用作定界符,但更改格式并将其与交换时没有成功。 任何帮助将不胜感激。 问题答案: 通过查看各个组成部分之间的分隔符,可以消除或格式中的日期的歧义:如果该分隔符是斜杠(),则假定为American ;否则,为0。反之,如果分隔符是破折号()或点(),则采用欧洲格式。 使用默认的

  • 我有一个格式为。我希望它的格式为 下面是我尝试进行此转换的示例util: 但是,我得到的输出不是格式。 请告诉我如何将从格式化为

  • 我正在尝试将yyyy-mm-dd't'hh:mm:ss.sssz格式的日期格式化为yyyy-mm-ddhh:mm:ss,这应该很容易,但我无法使其工作。 必须解析的日期形式为:2012-10-01T09:45:00.000+02:00 现在我使用这个简单的日期格式化程序来格式化它: 然而,这给出的输出类似于2012-10-01T09:45:00.000 UTC+00:00。 我还尝试使用“yyyy