如何比较两个时间戳的值

How to compare values of two timestamps

本文关键字:两个 时间戳 比较 何比较      更新时间:2023-09-26

我需要检查一个条件,其中我需要找出两个时间戳是否来自不同的日期。

我试着使用时间戳getDate,然后检查

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

当这两个值属于两个独立的月份时,问题就出现了,我如何在纯Javascript中进行处理?

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

如果currentTimestamp是一个字符串,只需获取日期部分(年、月、日)并进行比较。你还没有显示格式,所以如何显示取决于你自己。

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

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

但是,由于toDateString的值取决于实现,应仅在主机内使用,因此不应在主机之间比较字符串。

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

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))

随便什么。

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

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

使用.toDateString()方法应该可以做到:

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

该方法以不带时间的字符串形式返回日期,格式类似于"Fri Apr 15 2016",但具体格式无关紧要,因为您所说的问题只是弄清楚两个时间戳是否在同一天。