Javascript 检查两个时间戳是否在同一天
我正在从SQL中获取一些数据,这些数据具有时间戳,我想检查它们是否在同一天 在循环中,我试图检查前一个循环的时间戳是否与当前循环的时间戳相同。。。。。。我正在尝试这样的事情Javascript 检查两个时间戳是否在同一天,javascript,jquery,Javascript,Jquery,我正在从SQL中获取一些数据,这些数据具有时间戳,我想检查它们是否在同一天 在循环中,我试图检查前一个循环的时间戳是否与当前循环的时间戳相同。。。。。。我正在尝试这样的事情 $.each(data, function(key, value) { if( new Date([value.startTime] * 1000) === previousdate){ console.log("*** Same day ***"); } previousdate = n
$.each(data, function(key, value) {
if( new Date([value.startTime] * 1000) === previousdate){
console.log("*** Same day ***");
}
previousdate = new Date([value.startTime] * 1000);
}
虽然他们是同一天,但时间不同。。。。。。我只是想检查他们是否是同一天。。。。。我可以在比较它们之前修剪它们,这样它就可以很好地工作了。。。。但是有没有其他有效的方法来做到这一点
$.each(data, function(key, value) {
if( new Date([value.startTime] * 1000) === previousdate){
console.log("*** Same day ***");
}
previousdate = new Date([value.startTime] * 1000);
}
干杯…因为您只关心UTC日期,所以这应该很容易。时间戳是以秒为单位的,因此如果除以一天中的秒数,然后将该值降到最低,则应得到自1970年1月1日以来的天数。如果这两个值自1970年以来的天数相同,则有一个匹配项
$.each(data, function(key, value) {
var date, previous;
date = Math.floor(value.startTime / 60 / 60 / 24);
if (date === previous){
console.log("*** Same day ***");
}
previous = date;
}
我不清楚你是想检查是同一天还是同一天:你谈论同一天,但从你所做的事情来看,你似乎想检查是不是同一天。检查日期是否相同的方法如下:
$.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);
})
基本上创建一个新的日期对象,重置所有时间值(小时、分钟、秒和毫秒)
如果您仅将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;
});
除了*1000
操作之外,这是最简单、最安全的方法。你让引擎做所有的计算:不是所有的日子都是24小时计算的——看夏令时——也不是所有的分钟都是60秒计算的——看闰秒;所以假设这样做,做任何手术都是不安全的
当然,某些引擎也不能处理闰秒,例如,但它仍然更好,至少在夏令时是这样。您也可以尝试检查它们的日期字符串
var isSameDay = function(date, otherDate) {
return date.toDateString() === otherDate.toDateString();
};
这很好,因为它很容易内联完成 对于未来的谷歌人来说,这对我来说很有用:
function isSameDay(firstTimeStamp, secondTimeStamp) {
return (new Date(firstTimeStamp).getDate() === (new Date(secondTimeStamp).getDate());
}
注意:时间戳必须以毫秒为单位。如果以秒为单位,您需要调整它们。同一天在哪个时区?是(GMT标准时间),我使用的是unix时间戳。是否可以改为与过去24小时进行比较?那样的话,它只需要
| Time2-Time1 |<24小时毫秒
ya。。。我想这有助于我找到它们是否是同一天,这将给你两个日期之间的时间跨度,但你无法确定这是否是同一天/日期。假设日期a
是昨天晚上11点50分,日期b
是今天凌晨1点:时间跨度肯定小于24小时(1小时10分钟),但日期/日期不同。DST打破了这一点。试试数学地板(新日期(“11/25/13”)/(24*60*60*1000))==数学地板(新日期(“11/24/13 23:00”)/(24*60*60*1000))。这是真的。这要求日期也必须是相同的时间,这就是为什么被接受的答案在比较之前将两者的时间设置为相同的值。啊,感谢@owencm,现在通过将toString
切换到toDateString
来修复它。这不是一个好的解决方案,因为/**得到了月份的日期,使用本地时间。*/getDate():数字代码>