前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >isSameDate

isSameDate

作者头像
公众号@魔术师卡颂
发布2020-08-26 21:15:46
6330
发布2020-08-26 21:15:46
举报
文章被收录于专栏:魔术师卡颂魔术师卡颂

判断传入的两个日期对象是否是同一天。


使用Date.prototype.toISOString()全等比较传入的日期对象

代码语言:javascript
复制
const isSameDate = (dateA, dateB) => {
  return dateA.toISOString() === dateB.toISOString();
}

例子

代码语言:javascript
复制
// 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返回值单位是分钟,而不是小时,原因是某些国家所占有的时区甚至不到一个小时的间隔。

所以,考虑时区的情况下,以上代码可以写成如下形式:

代码语言:javascript
复制
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);
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔术师卡颂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子
  • 扩展阅读
    • GMT时间
      • getTimezoneOffset
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档