如何在 JavaScript 中仅比较日期部分而不比较时间?

front end technologyjavascriptweb development

在开发应用程序时,有时需要比较唯一的日期。例如,您正在开发一些应用程序,其中用户必须遵守截止日期并支付订​​阅费用。如果用户在订阅结束日期或之前的任何时间付款,则用户将能够继续使用订阅。否则,您需要停止订阅。

在本教程中,我们将学习在 JavaScript 中仅比较日期部分而不比较时间。

在上述情况下,我们需要比较两个日期而不关注时间。

方法 1:使用 setHours() 方法

比较仅日期部分的简单逻辑是从两个日期对象中删除时间或将时间设置为 0。在这里,我们将创建新的日期并将其时间设置为 0,以便当我们在日期之间进行比较时,它将仅比较日期部分,因为两个日期的时间相同。

语法

用户可以按照以下语法创建新的日期对象并将其时间设置为 0。

let date1 = new Date();
date1.setHours(0, 0, 0, 0);
let date2 = new Date( Date );
date2.setHours(0, 0, 0, 0);

我们可以使用以下语法来比较两个日期。

// 比较日期
if( date1 > date2 ) {
    // 执行某些操作
} else if ( date1 < dae2 ) {
    // 编写一些代码
} else {
    // 日期相同
}

参数

  • Date − 日期对象将日期作为该日期的参数,我们想要初始化 Date() 类的新对象。

  • setHours() 方法需要 4 个参数,分别是小时、分钟、秒和毫秒。我们将在两个日期上将所有内容都设置为 0。

示例

在下面的示例中,我们使用 Date() 类创建了两个新日期。之后,我们将两个日期的小时数都设置为 0。我们创建了用于比较日期的函数,该函数根据日期比较打印不同的输出。我们在下面的示例中采用了不同的日期进行比较并观察结果。

<html> <head> </head> <body> <h2>Comparing only date part of two dates JavaScript.</h2> <h4>compare two date by <i>setting up time 0</i> to the both dates.</h4> <p id = "output"></p> <script> let output = document.getElementById("output"); function compareDates( date1, date2 ) { if ( date1 < date2 ) { output.innerHTML += date1 + " is behind the " + date2 + " <br/> "; } else if ( date1 > date2 ) { output.innerHTML += date2 + " is behind the " + date1 + " <br/> "; } else { output.innerHTML += date1 + " is same as " + date2 + " <br/> "; } } // calling the function for different expressions output.innerHTML += "<br/>"; let date1 = new Date(); // setup time 0 date1.setHours(0, 0, 0, 0); let date2 = new Date(2002, 06, 21); date2.setHours(0, 0, 0, 0); compareDates(date1, date2); output.innerHTML += "<br/>"; date2 = new Date(); date2.setHours(0, 0, 0, 0); compareDates(date1, date2); </script> </body> </html>

我们将小时设置为 0,以比较 JavaScript 中唯一的日期部分。但是,用户可以从日期对象中提取年、月和日期并分别进行比较。

方法 2:使用 toDateString() 方法

toDateString() 方法可用于返回 JavaScript 日期的唯一日期部分。它将日期部分作为字符串返回。我们无法将字符串作为日期进行比较,因此我们需要将此字符串转换回日期。现在它将带有时间部分的日期设置为零。

语法

我们可以应用语法将日期转换为日期字符串,然后再转换回日期。

let date1 = new Date().toDateString();
date1 = new Date(date1)

示例

在下面的示例中,我们创建两个日期,然后使用 toDateString() 将它们转换为字符串。然后再次将这些字符串转换回日期。现在我们比较这些日期。

<html> <head> </head> <body> <h4>Compare two date part only using the toDateString() method.</h4> <p id="output"></p> <script> let output = document.getElementById("output"); function compareDates(date1, date2) { if (date1 < date2) { output.innerHTML += date1 + " is behind the " + date2 + "<br/> "; } else if (date1 > date2) { output.innerHTML += date2 + " is behind the " + date1 + "<br/> "; } else { output.innerHTML += date1 + " is same as " + date2 + " <br/>"; } } output.innerHTML += "<br/>"; let date1 = new Date().toDateString(); date1 = new Date(date1) let date2 = new Date(2002, 06, 21).toDateString(); date2 = new Date(date2) compareDates(date1, date2); output.innerHTML += "<br/>"; date2 = new Date().toDateString(); date2 = new Date(date2) compareDates(date1, date2); </script> </body> </html>

相关文章