判断传入的两个日期对象是否是同一天。
使用Date.prototype.toISOString()全等比较传入的日期对象。
const isSameDate = (dateA, dateB) => {
return dateA.toISOString() === dateB.toISOString();
}
例子
// true
isSameDate(new Date(2010, 10, 20), new Date(2010, 10, 20));
扩展阅读
Date.prototype.toISOString方法使用ISO标准将Date对象转换为string。
该标准称为ISO-8601 ,格式为: YYYY-MM-DDTHH:mm:ss.sssZ,返回的是标准GMT时间。
如果应用面向海外用户,需要考虑跨时区的情况。
GMT时间
GMT时间指英国格林威治时间,也就是世界标准时间,是0时区的区时。
与我国的标准时间北京时间(东八区)相差8小时,即GMT时间早上6点对应北京时间下午2点。
getTimezoneOffset
new Date().getTimezoneOffset方法可以获取本地时间与GMT时间之间相差的分钟数。在东八区调用该方法的返回值为-480。
getTimezoneOffset返回值单位是分钟,而不是小时,原因是某些国家所占有的时区甚至不到一个小时的间隔。
所以,考虑时区的情况下,以上代码可以写成如下形式:
const getLocalISOTime = date => {
// 将分钟数转化为毫秒数
const offset = date.getTimezoneOffset() * 60 * 1000;
// 去掉误差的本地时间时间戳
const localDate = date.getTime() - offset;
// 转化为ISO标准的时间格式
return new Date(localDate).toISOString();
}
const isSameDate = (dateA, dateB) => {
return getLocalISOTime(dateA) === getLocalISOTime(dateB);
}
关注我,30秒一个前端知识点
