JavaScript 对日期和时间进行降序排序

标签 javascript sorting date time

<分区>

我在使用 JavaScript 对日期和时间进行降序排序时遇到了一些问题。以下是一些输入:

[{chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM"},
{chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM"},
{chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM"}]

我想按降序对它们进行排序,最新的将排在最前面,但我不知道该怎么做。

期望的输出:

[{chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM"},
{chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM"},
{chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM"}]

如果结果来自同一个日期,那么我会按照时间排序。否则,最新日期将在最前面。有什么想法吗?

谢谢!

最佳答案

只需连接datetime,然后将其解析为Date 并获取时间戳。从那时起,它只是普通的旧排序。

const datetimes = [
  {chatroomID: "1", date: "12/26/2017", time: "10:31:32 PM"},
  {chatroomID: "2", date: "12/26/2017", time: "10:38:01 PM"},
  {chatroomID: "3", date: "12/26/2017", time: "10:35:14 PM"}
]

const sorted = datetimes.sort((a, b) => {
  const aDate = new Date(a.date + ' ' + a.time)
  const bDate = new Date(b.date + ' ' + b.time)
  
  return bDate.getTime() - aDate.getTime()
})

console.log(sorted)

更新:Marcel Gwerder 评论中的链接答案表明您可以完全跳过 getTime() 并只比较日期。

关于JavaScript 对日期和时间进行降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985180/

相关文章:

python按值的长度对字典进行排序

javascript - 如何将此字符串 "07/10/2017 18:30 PM"转换为 JavaScript 日期类型

java - 解析非标准日期格式,如 "+0yyyyMMdd"

javascript - 在树对象中的字符串数组中进行转换和分组

javascript - 使用 JS(原型(prototype)和 Rails 3)更改 hidden_​​field_tag 的值

php - 按不同表中的数据对mysql表进行排序

ios - 在 10 分钟切片中拆分最后两个小时

javascript - localstorage javascript 中的效果更改

javascript - 如何使用参数在 node.js 中进行 Curl 调用

javascript - 使用 Angular js 在表中按日期排序