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

如何按12小时制的Start_time字段对JSON数组进行排序?

按Start_time排序JSON数组的解决方案

没问题,我来帮你搞定这个时间排序的需求!你的JSON数组里的Start_time是带AM/PM的字符串格式,我们可以把这些时间字符串转换成可比较的Date对象,然后用数组的sort()方法来实现排序。

完整代码示例

这里直接给你适配好你JSON结构的代码(以JavaScript为例,这是处理前端/Node.js场景最常用的方式):

// 你的原始JSON数组
const events = [
  {
    "Event_code": "AB-001",
    "Start_time": "11:00 AM",
    "End_time": "3:00 PM",
    "Session_type": "Tour"
  },
  {
    "Event_code": "AB-002",
    "Start_time": "09:30 AM",
    "End_time": "1:00 PM",
    "Session_type": "Course information session"
  },
  {
    "Event_code": "AB-003",
    "Start_time": "9:00 AM",
    "End_time": "3:00 PM",
    "Session_type": "General information session"
  }
];

// 按Start_time升序排序(从早到晚)
const sortedEvents = events.sort((eventA, eventB) => {
  // 用一个固定日期拼接时间字符串,生成可解析的Date对象
  // 日期随便选,我们只关心时间部分的比较
  const timeOfA = new Date(`2024-01-01 ${eventA.Start_time}`);
  const timeOfB = new Date(`2024-01-01 ${eventB.Start_time}`);
  
  // Date对象相减会返回时间差(毫秒数),sort根据正负值排序
  return timeOfA - timeOfB;
});

// 输出排序后的结果
console.log(sortedEvents);

代码说明

  1. 时间转换:我们把每个事件的Start_time和一个固定日期拼接,这样Date对象就能正确解析带AM/PM的时间字符串,不管时间有没有前导零(比如9:00 AM和09:30 AM都能被正确识别)。
  2. 排序逻辑:sort()方法的回调函数里,两个Date对象相减会得到它们的时间差(毫秒数)。如果timeOfA - timeOfB是负数,说明eventA的时间更早,会排在前面;正数则相反,这样就实现了升序排序。
  3. 降序排序:如果需要从晚到早排序,只需要把返回值改成timeOfB - timeOfA即可。

排序后的结果

运行上面的代码后,你会得到按时间从早到晚排列的数组:

[
  {
    "Event_code": "AB-003",
    "Start_time": "9:00 AM",
    "End_time": "3:00 PM",
    "Session_type": "General information session"
  },
  {
    "Event_code": "AB-002",
    "Start_time": "09:30 AM",
    "End_time": "1:00 PM",
    "Session_type": "Course information session"
  },
  {
    "Event_code": "AB-001",
    "Start_time": "11:00 AM",
    "End_time": "3:00 PM",
    "Session_type": "Tour"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:45:52