JavaScript按降序排序日期后跟时间[重复]
Posted
技术标签:
【中文标题】JavaScript按降序排序日期后跟时间[重复]【英文标题】:JavaScript sort date followed by time in descending order [duplicate] 【发布时间】: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"]
如果结果来自同一日期,那么我会按照时间排序。否则,最新日期将在最前面。有什么想法吗?
谢谢!
【问题讨论】:
首先你应该将日期和时间转换为日期对象然后你应该看看Sort Javascript Object Array By Date 【参考方案1】:只需连接date
和time
,然后将其解析为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 Date
或Date.parse
与字符串窗台一起使用并不安全,请参阅the note on MDN。
@MarcelGwerder 公平点——我怀疑浏览器会与 OP 的格式不一致——但我不会对此发誓。以上是关于JavaScript按降序排序日期后跟时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章