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

JavaScript中对包含日期与时间的字符串进行排序的问题求解

JavaScript日期时间字符串排序修复方案

核心问题原因

DD/MM/YYYY格式的日期字符串无法被JavaScript原生Date构造函数正确解析:默认规则下/分隔的第一组数字会被识别为月份,比如29/09/2020会被判定为非法月份,生成无效日期,直接导致排序逻辑出错。

修复方案

先手动拆分日期字符串的各段字段,构造合法的Date对象后再进行排序,完整实现代码如下:

const x = [ '29/09/2020 11:55:56', '04/08/2021 11:57:06', '30/09/2019 15:19:49', '04/08/2021 13:57:06' ]

// 日期时间字符串转时间戳工具函数
function parseDateTimeStr(str) {
  const [datePart, timePart] = str.split(' ')
  const [day, month, year] = datePart.split('/').map(Number)
  const [hour, minute, second] = timePart.split(':').map(Number)
  // JavaScript中月份从0开始计数,因此需要减1
  return new Date(year, month - 1, day, hour, minute, second).getTime()
}

// 按时间从新到旧排序,无需额外调用reverse
x.sort((a, b) => parseDateTimeStr(b) - parseDateTimeStr(a))

console.log(x)

输出结果

运行上述代码将得到期望的排序结果:

["04/08/2021 13:57:06", "04/08/2021 11:57:06", "29/09/2020 11:55:56", "30/09/2019 15:19:49"]

补充说明

如果需要改为按时间从旧到新排序,仅需要调整sort回调内的参数顺序即可:

x.sort((a, b) => parseDateTimeStr(a) - parseDateTimeStr(b))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:45:03