我需要检查一个条件,我需要知道两个时间戳是否来自不同的日子。
我尝试使用timestamp.getDate然后检查
if (currentTimestamp.getDate() > previousTimestamp.getDate() )
当这两个值属于两个单独的月份时会出现问题,我怎样才能在纯Javascript中进行此操作?
答案 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
}
答案 2 :(得分:0)
使用.toDateString()
method应该这样做:
if (currentTimestamp.toDateString() != previousTimestamp.toDateString() ) {
// different days
}
该方法将日期作为字符串返回,没有时间,格式为"Fri Apr 15 2016"
- 但具体格式无关紧要,因为您说明的问题只是要弄清楚两个时间戳是否在同一天。