You need to enable JavaScript to run this app. 如何将后端返回的T格式JSON日期转为YYYY-MM-DD hh:mm am/pm格式展示?
优惠活动
大模型
产品
解决方案
定价
更多

如何将后端返回的T格式JSON日期转为YYYY-MM-DD hh:mm am/pm格式展示?

日期格式转换实现方案

前端jQuery侧处理

不推荐靠纯字符串硬切割ISO时间字符串,带Z后缀的ISO时间是UTC标准格式,硬切割会丢失时区转换逻辑,可根据场景选择两种实现:

1. 带时区转换的稳定实现(推荐)

通过原生Date对象解析原始ISO字符串,自动转换为用户本地时区后做格式化,替换原遍历循环中的日期渲染逻辑:

$(data.datas).each(function(index,value){
  // 解析原始时间字符串
  const rawDate = new Date(value.create_date);
  // 拼接各时间字段,补前导零
  const year = rawDate.getFullYear();
  const month = String(rawDate.getMonth() + 1).padStart(2, '0');
  const day = String(rawDate.getDate()).padStart(2, '0');
  let hour = rawDate.getHours();
  const minute = String(rawDate.getMinutes()).padStart(2, '0');
  // 处理12小时制与am/pm标识
  const ampm = hour >= 12 ? 'pm' : 'am';
  hour = hour % 12;
  hour = hour ? hour : 12; // 处理0点显示为12点的逻辑
  const formattedDate = `${year}-${month}-${day} ${String(hour).padStart(2, '0')}:${minute} ${ampm}`;

  // 拼接表格行时使用格式化后的日期
  html += `<tr>
    <th scope="row">${index+1}</th>
    <td>${value.id}</td>
    <td>${formattedDate}</td>
    <td><a href="#" class="btn btn-outline-dark">View Car</a></td>
  </tr>` 
})

2. 纯字符串快速处理(适合无需时区转换的场景)

如果不需要把UTC时间转换为本地时区,可基于之前的split拆分思路补全逻辑:

// 在each循环内部
const [datePart, timePart] = value.create_date.split('T');
const [hourStr, minuteStr] = timePart.split(':');
let hour = parseInt(hourStr);
const ampm = hour >= 12 ? 'pm' : 'am';
hour = hour % 12 || 12;
const formattedDate = `${datePart} ${String(hour).padStart(2, '0')}:${minuteStr} ${ampm}`;

Django后端侧处理

直接在后端接口返回数据前完成格式化,前端无需额外写转换逻辑,从根源上减少多端格式不统一的问题。

1. DRF序列化器场景

重写日期字段的输出格式:

from rest_framework import serializers
from .models import Car

class CarSerializer(serializers.ModelSerializer):
    # 按目标格式输出create_date
    create_date = serializers.DateTimeField(format="%Y-%m-%d %I:%M %p")
    class Meta:
        model = Car
        fields = ['id', 'create_date']

其中格式符对应规则:

  • %Y-%m-%d 输出年-月-日结构
  • %I 输出12小时制的带前导零的小时数
  • %M 输出带前导零的分钟数
  • %p 输出am/pm标识

2. 原生Django视图场景

在构造返回JSON时直接用strftime格式化时间:

from django.http import JsonResponse
from .models import Car

def get_car_list(request):
    car_list = []
    for car in Car.objects.all():
        car_list.append({
            "id": car.id,
            "create_date": car.create_date.strftime("%Y-%m-%d %I:%M %p")
        })
    return JsonResponse({"datas": car_list})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 18:24:05