如何在 JavaScript 中获取两个日期之间的天数?
本教程教我们如何使用 JavaScript 查找两个日期之间的天数。如果您是开发人员,有时您会遇到需要查找两个日期之间的天数的情况。
例如,如果您正在构建一个软件应用程序来跟踪员工的出勤率和工资。如果员工未完成当月工作就离职,您需要计算员工当月出勤的天数以支付工资。此外,还可能存在许多类似上述示例的情况。
在本教程中,我们将看到查找两个日期之间的天数的不同方法。
使用 Date 类
我们将使用 JavaScript 中的 Date 类 来实现此方法的目标。日期类的对象 new Date() 返回从 1970 年 1 月 1 日开始的总毫秒数。
我们将创建两个新的日期对象并用我们的日期初始化它们。此外,我们将使用 getTime() 方法获取两个日期之间的时差。
语法
用户可以按照以下语法使用当前日期初始化数据对象。
let startDate = new Date( Date ); let endDate = new Date( end_date ); startDate.getTime() – endDate.getTime() // 返回以毫秒为单位的时间差。
参数
Date −作为 Date 参数,用户需要以 mm / dd / yy 格式传递日期。
算法
用户可以按照以下算法获取两个日期之间的天数。
步骤 1 − 初始化两个日期对象。一个带有开始日期,另一个带有结束日期。
步骤 2 − 使用 Date 类的 getTime() 方法以毫秒为单位查找开始日期和结束日期之间的时间差。
步骤 3 −将时间差除以一天中的总毫秒数,即(1000 毫秒 *60 秒 *60 分钟 *24 小时)。
步骤 4 − 在上面的步骤中,我们将得到小数天数。我们将使用 Math.floor() 函数获取完整的天数。
示例
在下面的示例中,我们实现了上述算法,以在 JavaScript 中查找两个日期之间的天数。
<html> <head> <title>查找两个日期之间的天数。</title> </head> <body> <h2>查找两个日期之间的天数。</h2> <h4>2022 年 5 月 10 日和 2022 年 6 月 21 日之间的总天数</h4> <div id="days"></div> <h4> 2021 年 3 月 21 日和当前日期之间的总天数。</h4> <div id="currentdays"></div> <script type="text/javascript"> let days = document.getElementById("days"); let currentdays = document.getElementById("currentdays"); // 查找两个日期之间的差异。 let start_Date = new Date('05/ 10/ 2022'); let end_Date = new Date('06 / 21 / 2022'); // 计算总时间差 let timeDifference = start_Date.getTime() - end_Date.getTime(); let dayMilliSeconds = 1000 * 60 * 60 * 24; let totalDays = Math.abs(timeDifference / dayMilliSeconds); // 如果开始日期 < 结束日期,则返回负值 totalDays = Math.floor(totalDays); // 获取完整天数 days.innerHTML = totalDays; // 查找当前日期与其他日期之间的差异 let todaySDate = new Date(new Date().toISOString().slice(0, 10)); let currentDiff = new Date('03 / 21 / 2021') - todaySDate; totalDays = Math.abs(currentDiff / dayMilliSeconds); currentdays.innerHTML = Math.floor(totalDays); </script> </body> </html>
上面的输出显示了当前日期与其他日期之间的差异。此外,我们可以在输出中看到两个日期之间的差异。
使用 Moment JS 的 diff() 库函数
Moment JS 是一个优秀的 JavaScript 库,用于验证和操作 JavaScript 中的日期和时间。我们将在 HTML 代码的 <head> 部分添加 Moment JS 库的 CDN,以便将其与 Vanilla JavaScript 一起使用。
Moment JS 有一个内置方法,称为 diff(),用于计算两个日期之间的天数。
语法
用户可以按照以下语法使用 Moment JS 的 diff() 方法。
let start_Date = moment([2018, 1, 29]); // 以 yy / mm / dd 格式添加日期。 let totalDays = end_Date.diff(start_Date, 'days');
参数
end_Date − 这是结束日期。
Start_Date − 这是开始日期。
days − 获取两个日期之间的天数差。
示例
在下面的示例中,我们添加了 CDN 以在原生 JavaScript 中使用 Moment JS 库。之后,我们使用 Moment 类创建两个日期对象,并将 diff() 方法应用于日期。
<html> <head> <title> Finding the number of days between 2 dates. </title> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment-with-locales.min.js" integrity="sha512-vFABRuf5oGUaztndx4KoAEUVQnOvAIFs59y4tO0DILGWhQiFnFHiR+ZJfxLDyJlXgeut9Z07Svuvm+1Jv89w5g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> </head> <body> <h2>Finding the number of days between 2 dates. </h2> <h4> Total number of days between the 29/ 01 / 2018 and 08 / 04 / 2022 using Moment Js</h4> <div id="days"> </div> <script type="text/javascript"> let days = document.getElementById("days"); // 使用 Moment Js 查找两个日期之间的差异。 // 以 yy / mm / dd 格式创建新日期 let start_Date = moment([2018, 0, 29]); let end_Date = moment([2022, 4, 08]); let totalDays = end_Date.diff(start_Date, 'days'); days.innerHTML = totalDays; </script> </body> </html>
在上面的输出中,用户可以看到它显示了两个日期之间的天数。
结论
在本教程中,我们看到了两种方法来查找两个日期之间的天数。有很多方法可以实现我们的目标。在第一种方法中,我们使用了纯 JavaScript,在第二种方法中,我们使用了 Moment JS 库方法。第二种方法是最好的方法,因为用户不需要编写太多代码。