如何比较两个时间戳的值

时间:2016-04-15 04:55:39

标签: javascript date time

我需要检查一个条件,我需要知道两个时间戳是否来自不同的日子。

我尝试使用timestamp.getDate然后检查

if (currentTimestamp.getDate() > previousTimestamp.getDate() )

当这两个值属于两个单独的月份时会出现问题,我怎样才能在纯Javascript中进行此操作?

3 个答案:

答案 0 :(得分:2)

有很多方法可以实现这一目标。

如果 currentTimestamp 是一个字符串,只需获取日期部分(年,月,日)并进行比较。您还没有显示格式,因此您的工作方式取决于您。

如果 currentTimestamp 是日期,您可以使用nnnnnn的建议并比较日期字符串:

if (currentTimestamp.toDateString() == previousTimestamp.toDateString())

但是,由于 toDateString 的值取决于实现,因此只应在主机中使用,不应跨主机比较字符串。

如果您不介意修改日期值,那么:

if (currentTimestamp.setHours(0,0,0,0) == previousTimestamp.setHours(0,0,0,0))
如果两者都在同一天,

也将返回true。如果您不想更改日期,请先复制它们:

if (new Date(+currentTimestamp).setHours(0,0,0,0) == new Date(+previousTimestamp).setHours(0,0,0,0))

无论什么都适合。

正如马特所说,你的概念是" day"应该在当地日或UTC日(或任何其他时区)澄清,因为当地日的开始和结束时间可能在不同的UTC(或其他时区)日,反之亦然。

答案 1 :(得分:0)

var dateObj = currentTimestamp.getDate();
var month = dateObj.getUTCMonth() + 1;
//months from 1-12
var day = dateObj.getUTCDate();
var year = dateObj.getUTCFullYear();
var dateObjOld = previousTimestamp.getDate();
var dayOld = dateObjOld.getUTCDate();
var monthOld = dateObjOld.getUTCMonth() + 1;
var yearOld = dateObjOld.getUTCFullYear();
if(year > yearOld && month > monthOld && day > dayOld) {
    // currentTimeStamp is newer. Do stuff
}

请参阅此回答https://stackoverflow.com/a/2013332/4479004

答案 2 :(得分:0)

使用.toDateString() method应该这样做:

if (currentTimestamp.toDateString() != previousTimestamp.toDateString() ) {
    // different days
}

该方法将日期作为字符串返回,没有时间,格式为"Fri Apr 15 2016" - 但具体格式无关紧要,因为您说明的问题只是要弄清楚两个时间戳是否在同一天。