如何在 JavaScript 中获取自纪元以来的天数?


在本教程中,我们将学习如何使用 JavaScript 计算自纪元以来的天数。我们将使用 `Math.abs()` 和 `Math.floor()` 方法来计算天数。首先,我们将学习什么是纪元。

什么是纪元?

它也称为纪元时间、Unix 时间或 Posix 时间。在确定性上下文中,纪元是计算机时钟和时间戳相对于其确定的数据和时间。

纪元时间是从 1970 年 1 月 1 日午夜 UTC 时间起经过的秒数,减去闰秒。实际上,纪元是自计算机开始计数以来经过的秒数。这个纪元传统上对应于特定日期的协调世界时 (UTC) 0 时 0 分 0 秒 (00:00:00),不同系统之间有所不同。

即使我们有日期,为什么还需要纪元?

将日期和时间转换为纪元值可以更容易地查找差异,并从时间值中添加和减去。纪元在计算机编程中很有用,因为我们可以用它来数学地比较日期,这有助于我们通过将人类可读的日期格式转换为其等效的纪元值来编写编程逻辑。

下表用于确定纪元秒等效的时间段。

时间 纪元秒等效值
1 分钟 60
30 分钟 1800
1 小时 3600
1 天 86,400
1 周 604,800
2 周 12,09,600
3 周 18,14,400
1 个月 24,19,200
6 个月 14,515,200
1 年 29,030,400
1 个十年 290,304,000

例如,您可以将时间转换为纪元,并将其从另一个纪元值中减去以快速确定差异。如果差异为 95,400,并且您使用上表或数学公式发现差异为 1 天 2 小时半 (86400 + 3600 + 3600 + 1800 = 95,400)。

获取自纪元以来的天数的步骤

步骤 1 - 定义当前日期。

步骤 2 - 定义纪元日期。

步骤 3 - 找到当前日期和纪元日期之间的绝对差值,除以 1000。

步骤 4 - 找到两个日期之间的总天数。为此,我们将步骤 3 中的结果除以 86400。

步骤 5 - 显示自纪元以来的天数。

示例

在下面的示例中,我们获取了 JavaScript 中自纪元以来的天数。

<!DOCTYPE html>
<html>
<body>
   <h1>Calculating days since epoch</h1>
   <p>Current time is -
      <span id="currentDate"></span>
   </p>
   <p>Epoch time is -
      <span id="epochDate"></span>
   </p>
   <p>Number days -
      <span id="difference"></span>
   </p>
   <script>
      var currentDate, epochDate;
      currentDate = new Date();
      document.getElementById('currentDate').innerHTML=currentDate;
      var epochDate = new Date(new Date().getTime() / 1000);
      document.getElementById('epochDate').innerHTML=epochDate;
      var res = Math.abs(currentDate - epochDate) / 1000;
      
      // get total days between two dates
      var difference = Math.floor(res / 86400);
      document.getElementById('difference').innerHTML=difference;
   </script>
</body>
</html>

这里,`getTime()` 方法返回毫秒数。如果我们除以 1000,则它返回自纪元以来的秒数。在这里,我们将差值除以 86400,因为我们想以天数的形式计算它。

`Math.abs()` 方法返回数字的绝对值。也就是说,如果值为正数或零,则返回该值;如果值为负数,则返回该值的负值;如果值不是数字,则返回 NaN。希望本教程能让我们了解纪元和计算自纪元以来的天数。

更新于:2022-12-08

3K+ 次浏览

启动您的 职业生涯

完成课程后获得认证

开始学习
广告