迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

在 JavaScript 中比较没有时间的日期

作者:迹忆客 最近更新:2022/10/26 浏览次数:

要比较没有时间的日期。

  1. 创建每个日期的副本。
  2. 使用setUTCHours()方法将复制的日期上的时间设置为午夜。
  3. 比较在这些日期上调用getTime()方法的输出。
const date1 = new Date('2022-01-23T06:55:31.820Z');
const date2 = new Date('2022-01-23T09:30:24.820Z');

const date1WithoutTime = new Date(date1.getTime());
const date2WithoutTime = new Date(date2.getTime());

date1WithoutTime.setUTCHours(0, 0, 0, 0);
date2WithoutTime.setUTCHours(0, 0, 0, 0);

if (date1WithoutTime.getTime() === date2WithoutTime.getTime()) {
  // ✅ This runs 👇️ (dates are the same)
  console.log('dates are the same');
} else {
  console.log('dates are not the same');
}

if (date1WithoutTime.getTime() > date2WithoutTime.getTime()) {
  console.log('date1 comes after date2');
} else if (date1WithoutTime.getTime() === date2WithoutTime.getTime()) {
  // ✅ This runs 👇️ (dates are the same)
  console.log('date1 and date2 are the same');
} else {
  console.log('date2 comes after date1');
}

我们使用Date()构造函数创建了2个 Date 对象,它们都存储了2022年1月23日的时间。

为了能够比较日期而忽略时间,我们必须将日期的时间重置为午夜(或者简单地说是相同的小时、分钟、秒钟和毫秒)。

setUTCHours方法将小时、分钟、秒和毫秒作为参数,并根据世界时间在给定的日期上设置这些值。

然而,setUTCHours方法改变了Date对象,这可能不是你想要的。

这就是为什么我们使用 getTime 方法来获取1970年1月1日00:00:00和给定日期之间经过的毫秒的时间戳。

我们可以将时间戳传递给Date()构造函数来创建一个Date对象的副本。

我们使用setUTCHours方法将日期的时间设置为午夜,这样我们就可以比较日期而忽略时间。

getTime 方法返回一个数字,代表Unix Epoch和给定日期之间经过的毫秒。

console.log(new Date().getTime());

如果我们有两个存储相同年份、月份和日期的日期,那么时间戳将是相等的,因为我们将两个日期的时间设置为午夜。

如果一个日期大于另一个,那么它的时间戳将存储一个更大的数字,因为在Unix Epoch和特定日期之间经过了更多时间。

我们可以比较getTime()的输出,就像我们在JavaScript中比较数字一样。

下面是一个例子,date1 存储的是2022年2月23日的数值,date2存储的是2022年4月27日的数值。

const date1 = new Date('2022-02-23T06:55:31.820Z');
const date2 = new Date('2022-04-27T09:30:24.820Z');

const date1WithoutTime = new Date(date1.getTime());
const date2WithoutTime = new Date(date2.getTime());

date1WithoutTime.setUTCHours(0, 0, 0, 0);
date2WithoutTime.setUTCHours(0, 0, 0, 0);

if (date1WithoutTime.getTime() === date2WithoutTime.getTime()) {
  console.log('dates are the same');
} else {
  // ✅ This runs 👇️ (dates are NOT the same)
  console.log('dates are not the same');
}

if (date1WithoutTime.getTime() > date2WithoutTime.getTime()) {
  console.log('date1 comes after date2');
} else if (date1WithoutTime.getTime() === date2WithoutTime.getTime()) {
  console.log('date1 and date2 are the same');
} else {
  // ✅ This runs 👇️ (date2 comes after date1)
  console.log('date2 comes after date1');
}

date2变量中的值在date1变量中的值之后,因此它的时间戳是一个更大的数字,所以else语句在两个条件中都运行。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

比较 MongoDB 中的日期

发布时间:2023/04/20 浏览次数:101 分类:MongoDB

在本文中,我们将了解如何在 MongoDB 中比较日期。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便