【问题标题】:JavaScript sort date followed by time in descending order [duplicate]JavaScript按降序排序日期后跟时间[重复]
【发布时间】:2018-06-07 16:27:06
【问题描述】:

我在使用 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"}]

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

谢谢!

【问题讨论】:

标签: javascript sorting date time


【解决方案1】:

只需连接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() 并比较日期。

【讨论】:

  • 我认为将new DateDate.parse 与字符串窗台一起使用并不安全,请参阅the note on MDN
  • @MarcelGwerder 公平点——我怀疑浏览器会与 OP 的格式不一致——但我不会对此发誓。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2010-09-19
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
相关资源
最近更新 更多