如何在JavaScript中只比较日期部分而不比较时间?
在开发应用程序时,有时只需要比较日期。例如,您正在开发一些需要用户遵守截止日期并支付订阅费的应用程序。如果用户在订阅结束日期或之前任何时间付款,则用户可以继续使用订阅。否则,您需要停止订阅。
在本教程中,我们将学习如何在JavaScript中只比较日期部分而不比较时间。
在上述情况下,我们需要比较两个日期,而不关注时间。
方法一:使用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);
我们可以使用以下语法来比较两个日期。
// comparing the dates if( date1 > date2 ) { // do something } else if ( date1 < dae2 ) { // write some code } else { // date is same }
参数
日期 − 日期对象将日期作为参数,对于该日期,我们要初始化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中比较日期部分。但是,用户可以从日期对象中提取年份、月份和日期,并分别进行比较。
方法二:使用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>