如何比较日期以查看相邻时间的相遇?

时间:2014-06-21 17:05:42

标签: javascript sorting date date-sorting

我的日期目前按以下方式格式化:

[ [ Tue Jun 17 2014 09:00:00 GMT-0400 (EDT),
    Tue Jun 17 2014 10:00:00 GMT-0400 (EDT) ] ]

[ [ Thu Jun 19 2014 09:30:00 GMT-0400 (EDT),
    Thu Jun 19 2014 11:30:00 GMT-0400 (EDT) ] ]

[ [ Tue Jun 17 2014 10:00:00 GMT-0400 (EDT),
    Tue Jun 17 2014 11:00:00 GMT-0400 (EDT) ] ]

这些日期实际上是"会话",我需要查看某些会话彼此相邻的位置。例如,在这种特定情况下,第一个日期数组的结束时间为10AM,而最后一个日期数组的开始时间为10AM。我怎样才能在计算上找到这种情况?

我所采用的一种方法是首先从最早的时间到最新的时间对数组进行排序,然后比较每个开始/结束日期对,看看它们是否相同,但我似乎无法通过它。欢迎任何想法!

1 个答案:

答案 0 :(得分:0)

将字符串转换为带有Date.parse()的Unix时间戳(如果这些是Date个对象,则使用.getTime()方法),然后使用Array.prototype.sort()对会话进行排序。以下是按开始时间排序会话的示例:

var sessions = [
    ["Tue Jun 17 2014 09:00:00 GMT-0400 (EDT)", "Tue Jun 17 2014 10:00:00 GMT-0400 (EDT)"],
    ["Thu Jun 19 2014 09:30:00 GMT-0400 (EDT)", "Thu Jun 19 2014 11:30:00 GMT-0400 (EDT)"],
    ["Tue Jun 17 2014 10:00:00 GMT-0400 (EDT)", "Tue Jun 17 2014 11:00:00 GMT-0400 (EDT)"]
];

for (var i = 0; i < sessions.length; i++) {
    sessions[i].startTime= Date.parse(sessions[i][0]);
}

sessions.sort(function(a, b) { return a.startTime-b.startTime; });