You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中按最新日期优先正确排序JSON对象?

如何修正按日期时间排序的逻辑问题

我尝试对API返回的JSON对象按最新日期时间优先排序,但当前实现把2022年12月判定为比2023年1月更新。以下是我的代码和错误排序结果,求修正方法。

当前代码

result = [
{
   "date": "21/12/2022",
    "time": "10:41:10",
},
{
    "date": "20/12/2022",
    "time": "12:42:21",
},
{
    "date": "15/12/2022",
    "time": "09:26:02",
},
{
    "date": "14/12/2022",
    "time": "10:20:54",
},
{
    "date": "09/01/2023",
    "time": "18:58:17",
},
{
    "date": "09/01/2023",
    "time": "18:57:34",
},  
{
    "date": "08/01/2023",
    "time": "12:12:38",
}]

if (result.length > 1) {
        result.sort((a, b) => {
            const dateTime1 = new Date(a.date + a.time);
            const dateTime2 = new Date(b.date + b.time);

            return dateTime2 - dateTime1;
        });

        console.log(result);
};

错误排序结果

[
  {date: "21/12/2022", time: "10:41:10"},
  {date: "20/12/2022", time: "12:42:21"},
  {date: "15/12/2022", time: "09:26:02"},
  {date: "14/12/2022", time: "10:20:54"},
  {date: "09/01/2023", time: "18:58:17"},
  {date: "09/01/2023", time: "18:57:34"},
  {date: "08/01/2023", time: "12:12:38"}
]

问题原因

直接拼接date和time传给Date构造函数会触发两个问题:

  1. 你的日期格式是DD/MM/YYYY,但JS的Date默认会按美式MM/DD/YYYY解析,导致日期识别错误(比如21/12/2022会被错误解析);
  2. 日期和时间直接拼接无分隔符,Date无法正确识别时间部分。

修正代码

手动拆分日期和时间的各部分,构造正确的Date对象:

if (result.length > 1) {
    result.sort((a, b) => {
        // 自定义解析函数,处理DD/MM/YYYY格式的日期和时分秒
        const parseDateTime = (dateStr, timeStr) => {
            const [day, month, year] = dateStr.split('/').map(Number);
            const [hours, minutes, seconds] = timeStr.split(':').map(Number);
            // Date构造函数的月份是0-based(0代表1月),所以要减1
            return new Date(year, month - 1, day, hours, minutes, seconds);
        };

        const dateTime1 = parseDateTime(a.date, a.time);
        const dateTime2 = parseDateTime(b.date, b.time);

        return dateTime2 - dateTime1; // 倒序排序,最新日期在前
    });

    console.log(result);
}

修正后正确结果

[
  {date: "09/01/2023", time: "18:58:17"},
  {date: "09/01/2023", time: "18:57:34"},
  {date: "08/01/2023", time: "12:12:38"},
  {date: "21/12/2022", time: "10:41:10"},
  {date: "20/12/2022", time: "12:42:21"},
  {date: "15/12/2022", time: "09:26:02"},
  {date: "14/12/2022", time: "10:20:54"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:22