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

Protractor如何按日期/时间对列表进行排序?转换日期字符串无效怎么办

按自定义格式日期对列表排序的实现方案

你遇到的日期解析失败问题是因为原生Date构造器无法识别你日期字符串中的|分隔符,只要预处理掉该字符即可正常解析,再基于解析出的时间戳完成排序即可,具体实现如下:

1. 日期解析函数实现

首先写一个工具函数,把你当前格式的日期字符串转换为可用于排序的时间戳:

function parseCustomDate(dateStr) {
  // 移除日期字符串中的|分隔符,适配原生Date的解析规则
  const processedStr = dateStr.replace('|', '').trim();
  return new Date(processedStr).getTime();
}

2. 列表排序逻辑

假设你的列表中每条数据的日期字段为eventTime,排序代码如下:

// 示例待排序列表
const rawList = [
  { title: "活动A", eventTime: "Mon, Nov 1 | 8:30 PM" },
  { title: "活动B", eventTime: "Sun, Oct 31 | 9:00 AM" },
  { title: "活动C", eventTime: "Mon, Nov 1 | 2:15 PM" }
];

// 按时间升序排序(从早到晚)
const sortedAscList = rawList.sort((item1, item2) => {
  return parseCustomDate(item1.eventTime) - parseCustomDate(item2.eventTime);
});

// 按时间降序排序(从晚到早)
const sortedDescList = rawList.sort((item1, item2) => {
  return parseCustomDate(item2.eventTime) - parseCustomDate(item1.eventTime);
});

额外注意点

  • 你当前使用的日期格式没有携带年份,默认会被解析为当前年份,如果你的列表涉及跨年数据,需要在预处理字符串时补充对应年份信息,避免解析错误
  • 英文的星期、月份缩写在所有主流浏览器和Node.js环境中都可被正常解析,无需额外处理locale配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:00:01