如何在Typescript中比较两个带或不带时间的日期?

1,046 阅读3分钟

有时候,我们想比较日期,如果它是相同的,我们需要显示出来。

本教程解释了我们如何在Angular中比较日期。

如果两个对象是相等的,这意味着值或属性值是相等的。

就Date对象而言,它包含日期和时间,单位是毫秒。

在typescript中,日期数据是用Date 类型来引用的。

让我们创建一个Date对象并使用console.log来打印日期。

console.log(new Date()) //Mon Jun 28 2021 10:51:01 GMT+0530 (India Standard Time)

由于Date对象返回的默认值包含

让我们创建两个日期并使用=====比较。

let date1 = new Date("2021-02-21"); 
let date2 = new Date("2021-02-21");
console.log(date1===date2) //false
console.log(date1==date2) //false

尽管我们创建了两个日期,但当我们使用等价运算符进行比较时,它返回错误。

这篇文章回答了以下问题

  • 如何将日期与时间进行比较
  • 如何比较没有时间的日期?
  • 比较未来和过去的日期?
  • 如何判断两个日期是否在同一天?

首先检查如何在Typescripts中检查?

对于日期,你可以使用<,>,==,>=,<=操作符,只用Date.getTime方法来比较日期对象。

在下面的例子中

  • 创建两个具有相同值的日期
  • 日期对象的比较返回false
  • Date.getTime()比较返回true。

这个例子比较了日期和时间是否相等。

let date1 = new Date("2021-02-21"); 
let date2 = new Date("2021-02-21");
console.log(date1) //Sun Feb 21 2021 05:30:00 GMT+0530 (India Standard Time)
console.log(date2) //Sun Feb 21 2021 05:30:00 GMT+0530 (India Standard Time)


console.log(date1.getTime()) //1613865600000
console.log(date2.getTime()) // 1613865600000
console.log(date1===date2) //false
console.log(date1.getTime()===date2.getTime()) //true

在这个例子中,只比较日期而忽略了时间值。

所以,这种方法是为了设置 我们可以写一个函数来检查年月日是否相等。

let date1 = new Date("2021-02-21"); 
let date2 = new Date("2021-02-21");
function isDatesEqual(date1, date2) {
  return date1.getFullYear() === date2.getFullYear() &&
    date1.getMonth() === date2.getMonth() &&
    date1.getDate() === date2.getDate();
}


console.log(isDatesEqual(date1,date2));

MomentJS提供了以下方法来比较带或不带时间戳的日期。

  • isSame: 检查两个时刻日期对象是否相等
moment('2021-02-12').isSame('2021-02-12'); // true
moment('2021-02-12').isSame('2021-02-15'); // false
moment('2021-02-12').isSame('2021-02-10'); // false
  • isBefore:一个日期在另一个日期之前
moment('2021-02-12').isBefore('2021-02-12'); // false
moment('2021-02-12').isBefore('2021-02-15'); // true
moment('2021-02-12').isBefore('2021-02-10'); // false
  • isAfter:一个日期在另一个日期之后
moment('2021-02-12').isAfter('2021-02-12'); // false
moment('2021-02-12').isAfter('2021-02-15'); // false
moment('2021-02-12').isAfter('2021-02-10'); // true