如何获取departDateArr最小时间与arriveDateArr最大时间?
获取日期时间数组的最小/最大值实现方案
问题说明
给定两个日期时间数组:
let departDateArr=['2020-10-13 12:00','2020-10-03 13:00','2020-10-13 8:00','2020-10-16 20:00'] let arriveDateArr=['2022-12-20 00:00','2022-12-20 12:20','2022-12-19 12:20','2022-12-08 12:20']
需要实现:
- 从
departDateArr中提取最小时间值 - 从
arriveDateArr中提取最大时间值
实现方案
由于你提供的日期时间字符串是YYYY-MM-DD HH:mm的标准格式,这种格式的字符串字典排序顺序与时间先后顺序完全一致,因此可以直接利用字符串比较或数组方法快速实现需求,无需复杂的日期转换。
方法1:数组排序直接取值(简洁高效)
这是最轻量化的实现方式:
// 获取departDateArr的最小时间(不修改原数组) const minDepart = [...departDateArr].sort()[0]; // 结果:'2020-10-03 13:00' // 获取arriveDateArr的最大时间(不修改原数组) const maxArrive = [...arriveDateArr].sort().reverse()[0]; // 结果:'2022-12-20 12:20'
注:使用扩展运算符
[...arr]创建数组副本,避免sort()方法修改原数组。如果允许修改原数组,直接写departDateArr.sort()[0]即可。
方法2:转换为Date对象比较(兼容非标准格式)
如果需要兼容更多非标准日期格式,或者追求更严谨的时间比较逻辑,可以将字符串转为Date对象,通过时间戳数值进行比较:
// 获取departDateArr的最小时间 const minDepartTimeStamp = Math.min(...departDateArr.map(dateStr => new Date(dateStr).getTime())); const minDepart = new Date(minDepartTimeStamp).toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }).replace(/\//g, '-'); // 结果:'2020-10-03 13:00' // 获取arriveDateArr的最大时间 const maxArriveTimeStamp = Math.max(...arriveDateArr.map(dateStr => new Date(dateStr).getTime())); const maxArrive = new Date(maxArriveTimeStamp).toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }).replace(/\//g, '-'); // 结果:'2022-12-20 12:20'
这种方法兼容性更强,但代码相对繁琐,适合处理格式不统一的日期字符串。
内容的提问来源于stack exchange,提问作者头不痛的无双
相关产品推荐
相关产品推荐

