如何在 JavaScript 中获取两个日期之间的天数?

front end technologyjavascriptweb development

本教程教我们如何使用 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 库方法。第二种方法是最好的方法,因为用户不需要编写太多代码。


相关文章