检查两个时间戳是同一天

tro*_*roy 9 javascript jquery

我从SQL中获取了一些有时间戳的数据,我想检查它们是否是同一天......

在循环中我试图检查前一个循环时间戳与当前循环时间戳相同......我正在尝试这样的事情......

$.each(data, function(key, value) {
   if( new Date([value.startTime] * 1000) === previousdate){
       console.log("*** Same day ***");
    }
    previousdate = new Date([value.startTime] * 1000);
}
Run Code Online (Sandbox Code Playgroud)

但是虽然它们是同一天,但它们在时间上有所不同......我只想检查它们是否在同一天......我可以在比较它们之前修剪它们以便它可以正常工作......但有没有其他有效的方法来做到这一点......

干杯...

vpo*_*tis 17

您也可以尝试检查他们的日期字符串.

var isSameDay = function(date, otherDate) {
  return date.toDateString() === otherDate.toDateString();
};
Run Code Online (Sandbox Code Playgroud)

这很好,因为内联很容易.


ZER*_*ER0 14

我不清楚你是否想要检查它是在同一天还是同一天:你谈论的是同一天但是从你正在做的事情看来你想要检查它是否是同一天.检查是否是相同日期的方法如下:

$.each(data, function(key, value) {
    var current = new Date(value.startTime * 1000).setHours(0, 0, 0, 0);
    var previous = new Date(previousDate).setHours(0, 0, 0, 0);

    if(current === previous){
        console.log("*** Same day ***");
    }
    previousdate = new Date([value.startTime] * 1000);
})
Run Code Online (Sandbox Code Playgroud)

您基本上创建一个新的Date对象,重置所有时间值(小时,分钟,秒和毫秒).

如果您previousdate只使用此检查,则可以简化:

$.each(data, function(key, value) {
    var current = new Date(value.startTime * 1000).setHours(0, 0, 0, 0);

    if(current === previousdate){
        console.log("*** Same day ***");
    }

    previousdate = current;
});
Run Code Online (Sandbox Code Playgroud)

除了* 1000操作,这是AFAIK最简单,最安全的方式.你让引擎进行所有的计算:不是所有的日子都是24小时 - 看夏令时 - 而不是所有的分钟都是60秒 - 见闰秒; 所以假设这样做是不安全的.

例如,当然一些发动机也不能处理闰秒,但它仍然更好,至少在夏令时.