如何进行时间比对取出数组中的最大时间,最小时间?

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数组最大时间,如果考虑到ios不识别2020-10-13这种日期格式应该如何操作呢?

阅读 2.3k
2 个回答

先将两个时间数组分别遍历,转成时间戳,就可以根据时间戳用math.max获取最大,math.min获取最小了

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']

let departList = []
let arriveList = []

for (let item of departDateArr) {
  departList.push(new Date(item).getTime())
}
for (let item of arriveDateArr) {
  arriveList.push(new Date(item).getTime())
}


let max = Math.max(...departList)
let min = Math.min(...arriveList)

// 之后时间戳在转一下事件就行了
        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']
        // 方法一
        const getDateVal = (arr, type) => {
            let newArr = arr.map((v, i) => ({time: new Date(v.replaceAll('-', '/')).getTime(),index: i})) //'2020-10-03 13:00'改为'2020/10/03 13:00' 兼容ios
            newArr.sort((a, b) => a.time - b.time)
            if (type === 'min') {
               return arr[newArr[0].index]
            } else {
               return arr[newArr[newArr.length - 1].index]
            }
        }
        // 方法二
        const getDateVal = ([...arr], type) => {
        arr.sort((a, b) => new Date(a.replaceAll('-', '/')).getTime() - new Date(b.replaceAll('-', '/')).getTime())
        if (type === 'min') {
            return arr[0]
        } else {
            return arr[arr.length - 1]
        }
    }
    getDateVal(departDateArr, 'min')
    getDateVal(arriveDateArr, 'max')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题