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

JS中如何将字符串日期转为Date对象并格式化排序?

解决方案

1. 关于是否需要转为Date对象

你拿到的是标准ISO 8601格式日期字符串,这种格式的字符串按字典序排序的结果和时间顺序完全一致,理论上可以直接对字符串数组排序。但为了逻辑更清晰、避免遇到非标准格式时出问题,更推荐转为Date对象后再排序,可靠性更高。

2. 数组排序实现

方式一:直接对字符串排序(简单但兼容性稍弱)

const dateStrings = ["2022-06-29T15:30:00+00:00", "2022-06-27T10:00:00+00:00", "2022-06-30T08:15:00+00:00"];
// 升序(从早到晚)
const sortedAsc = dateStrings.sort((a, b) => a.localeCompare(b));
// 降序(从晚到早)
const sortedDesc = dateStrings.sort((a, b) => b.localeCompare(a));

方式二:转为Date对象排序(推荐)

const dateStrings = ["2022-06-29T15:30:00+00:00", "2022-06-27T10:00:00+00:00", "2022-06-30T08:15:00+00:00"];
// 升序
const sortedAsc = dateStrings.sort((a, b) => new Date(a) - new Date(b));
// 降序
const sortedDesc = dateStrings.sort((a, b) => new Date(b) - new Date(a));

3. 日期格式转换为DD.MM.YYYY

方式一:直接拆分字符串(高效,适合固定ISO格式)

利用ISO字符串的固定结构直接提取年月日:

function formatToDDMMYYYY(dateStr) {
  // 截取YYYY-MM-DD部分并拆分
  const [year, month, day] = dateStr.split('T')[0].split('-');
  return `${day}.${month}.${year}`;
}

// 示例
console.log(formatToDDMMYYYY("2022-06-29T15:30:00+00:00")); // 输出 "29.06.2022"

方式二:通过Date对象处理(灵活,适配非固定格式)

如果后续可能遇到非标准日期格式,用Date对象提取更稳妥:

function formatToDDMMYYYY(dateStr) {
  const date = new Date(dateStr);
  // 补零确保是两位数字
  const day = String(date.getDate()).padStart(2, '0');
  const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份是0-11,需加1
  const year = date.getFullYear();
  return `${day}.${month}.${year}`;
}

// 示例
console.log(formatToDDMMYYYY("2022-06-29T15:30:00+00:00")); // 输出 "29.06.2022"

4. 组合操作:先排序再格式化

把排序和格式化结合,得到最终的结果数组:

const dateStrings = ["2022-06-29T15:30:00+00:00", "2022-06-27T10:00:00+00:00", "2022-06-30T08:15:00+00:00"];

// 先按时间升序排序
const sortedDates = dateStrings.sort((a, b) => new Date(a) - new Date(b));
// 再格式化每个日期
const result = sortedDates.map(formatToDDMMYYYY);

console.log(result);
// 输出:["27.06.2022", "29.06.2022", "30.06.2022"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:12:22