簡體   English   中英

如何更改字符串中的 Django 日期時間格式

[英]How to change the Django date time format in a string

給定一個長字符串(序列化 Django 對象)我們如何搜索所有時間戳並用正確的格式替換它們(dd/mm/YYYY HH:MM)

給出的示例字符串:

"[{"model": "app_name.files", "pk": 294, "fields": {"filename": "user_1/A.pdf", "user": 1, "uploaded": "2022-01-11T16:49:43.897", "updated": "2022-01-11T16:49:43.897"}}, {"model": "app_name.files", "pk": 296, "fields": {"filename": "user_1/Business_Flow.pdf", "user": 1, "uploaded": "2022-01-11T16:55:05.165", "updated": "2022-01-11T16:55:05.165"}}, {"model": "app_name.files", "pk": 297, "fields": {"filename": "user_1/Business_Flow_K1Wvyz6.pdf", "user": 1, "uploaded": "2022-01-11T17:00:26.649", "updated": "2022-01-11T17:00:26.649"}}, {"model": "app_name.files", "pk": 298, "fields": {"filename": "user_1/2021M4_RF.xls", "user": 1, "uploaded": "2022-01-11T17:01:03.644", "updated": "2022-01-11T17:01:03.644"}}]"

示例日期(來自給定示例): 2022-01-11T16:49:43.897所需日期時間格式: 11/01/2022 16:49

到目前為止我已經嘗試過:

@login_required
def my_view(request):
    response = dict()
    if request.method == 'GET':
        files = Files.objects.all().filter(user=request.user)
        for fhr in files:
            fhr.updated = fhr.updated.strftime("%d/%m/%Y %H:%M:%S")
        data = serialize("json", files)
        return HttpResponse(data, content_type="application/json")
    return HttpResponse('')

基本上我嘗試使用正確的格式strftime("%d/%m/%Y %H:%M:%S")編輯查詢集,以便當我將 QuerySet 序列化為 JSON 數據data = serialize("json", files)字符串( data )包含正確格式的日期和時間,但它不起作用。

所以現在我認為唯一的機會是直接編輯字符串並將這些時間戳替換為正確格式的時間戳。

最簡單的方法是在序列化 function 中指定編碼器 class。 請參閱文檔

import typing

from datetime import datetime
from django.core.serializers.json import DjangoJSONEncoder


class DatetimeJSONEncoder(DjangoJSONEncoder):

    def default(self, o: typing.Any) -> str:
        result = super().default(o)
        if isinstance(o, datetime):
            result = o.strftime("%d/%m/%Y %H:%M:%S")
        return result

data = serialize("json", files, cls=DatetimeJSONEncoder)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM