如何判断两个日期是否在同一天?

rez*_*eza 34 javascript typescript

我正在使用npm模块.我正在比较两个日期,并想看看是否在同一天.

有没有一种干净的方式来使用时刻包或使用直接的javascript或打字稿?

Poi*_*nty 52

Date原型具有允许您检查年,月和日的API,这看起来简单有效.

您需要确定应用程序是否需要从运行代码的语言环境的角度来看相同的日期,或者比较是否应基于UTC值.

function sameDay(d1, d2) {
  return d1.getFullYear() === d2.getFullYear() &&
    d1.getMonth() === d2.getMonth() &&
    d1.getDate() === d2.getDate();
}
Run Code Online (Sandbox Code Playgroud)

有相应的UTC干将getUTCFullYear(),getUTCMonth()getUTCDate().

  • 也许首先检查日期(`getDate`)可能会更有效。如果我们检查靠近的日期,年份和月份可能相同,但日期更有可能不同。我们可以在一次比较后通过短路退出函数来节省一些检查。 (8认同)
  • @PaulRooney 这是一个很好的观点;同样,对原始时间戳进行初始范围检查可能是值得的。在现代运行时,我怀疑只有在非常频繁地进行比较时,这种改进才有意义。 (2认同)
  • @JonasMerhej 这不适用于数字,因为你会得到误报。例如,5 月 5 日(第 4 个月第 5 天)将与 7 月 4 日(第 5 个月第 4 天)相同 (2认同)

Dan*_*aub 7

var isSameDay = (dateToCheck.getDate() === actualDate.getDate() 
     && dateToCheck.getMonth() === actualDate.getMonth()
     && dateToCheck.getFullYear() === actualDate.getFullYear())
Run Code Online (Sandbox Code Playgroud)

这样可以确保日期在同一天。

阅读有关Javascript 字符串的更多信息Date