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

如何在JavaScript中调整日期格式以实现出生日期排序?

关于自定义日期格式排序的问题

你担心的点非常对——直接用new Date()解析你这种日.月.年 时间的格式,很可能会出问题。JavaScript的Date对象对非标准日期字符串的解析行为在不同环境下并不一致,比如有些浏览器会把4.02.1976误判为4月2日,而不是你实际想表达的2月4日,这会直接导致排序结果完全错误。

所以我们需要先手动解析这种自定义格式的日期,把它转换成可靠的Date对象或者时间戳,再进行排序。下面是具体的实现方案:

步骤1:编写自定义日期解析函数

这个函数会把你的日.月.年 时间格式字符串拆分成各个部分,然后构造正确的Date对象(注意:Date的月份是从0开始的,所以要把提取到的月份减1):

function parseCustomDate(dateStr) {
  // 拆分日期和时间部分
  const [datePart, timePart] = dateStr.split(' ');
  // 拆分日、月、年,并转为数字
  const [day, month, year] = datePart.split('.').map(Number);
  // 拆分时、分,并转为数字
  const [hours, minutes] = timePart.split(':').map(Number);
  // 构造正确的Date对象(月份减1)
  return new Date(year, month - 1, day, hours, minutes);
}

步骤2:使用解析函数进行排序

把这个函数嵌入到你的排序逻辑中,替换原来直接用new Date()的写法:

var obj = [
  {"id":1,"dateOfBirth":"1.7.1990 11:35"}, 
  {"id":4,"dateOfBirth":"4.02.1976 14:37"},
  {"id":2,"dateOfBirth":"28.10.1950 2:15"},
  {"id":3,"dateOfBirth":"03.01.1963 23:10"}
];

obj.sort(function(a, b) {
  const dateA = parseCustomDate(a.dateOfBirth);
  const dateB = parseCustomDate(b.dateOfBirth);
  return dateA.getTime() - dateB.getTime();
});

// 验证排序结果,会按出生日期从早到晚排列
console.log(obj);

为什么要这么做?

原生的Date.parse()方法只对标准日期格式(比如YYYY-MM-DD、MM/DD/YYYY)有稳定的解析效果,对于你这种自定义的日.月.年格式,不同JavaScript引擎的解析规则可能不一样,会导致排序逻辑出现不可预测的错误。手动解析能确保每一个日期都被正确转换,保证排序结果的准确性。

内容的提问来源于stack exchange,提问作者Dawid Kwiatoń

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:09