JavaScript >> Javascript 文檔 >  >> Tags >> Date

JavaScript:獲取日期之間的天數

簡介

我們經常發現自己在計算開始的天數 和 一個約會。無論是計算某人何時應歸還書籍、何時應續訂、自收到通知以來已過去多少天或何時有新活動。

在本教程中,我們將了解 如何在 JavaScript 中獲取日期之間的天數 .

日期 JavaScript 中的對象

一個 JavaScript DateNumberUNIX 紀元 開始以來經過的滴答聲(或毫秒) (UTC 時間 1970 年 1 月 1 日午夜)。

儘管從本質上講,Date 對像是根據 UTC 定義的 ,它的所有方法都在本地時區獲取時間和日期:

Date(); // Constructor for a new Date object
Date.now(); // Number of miiliseconds elaspsed since January 1, 1970 00:00:00 UTC

現在我們已經熟悉了語法,讓我們看看如何使用 Date 獲取兩個日期之間的天數 JavaScript 中的對象。

日期之間的天數

要獲取兩個日期之間的天數,我們將創建一個簡單的函數 getNumberOfDays() ,它接受兩個 Date 對象:

function getNumberOfDays(start, end) {
    const date1 = new Date(start);
    const date2 = new Date(end);

    // One day in milliseconds
    const oneDay = 1000 * 60 * 60 * 24;

    // Calculating the time difference between two dates
    const diffInTime = date2.getTime() - date1.getTime();

    // Calculating the no. of days between two dates
    const diffInDays = Math.round(diffInTime / oneDay);

    return diffInDays;
}

console.log(getNumberOfDays("2/1/2021", "3/1/2021"));

此代碼導致:

28

該函數接受兩個 String s,代表日期。我們首先創建 Date 從這些字符串中提取對象,之後,我們計算一天中的毫秒數。 getTime() 函數返回以毫秒為單位的時間 , 在 Unix 紀元的開始和當前時間之間。所以,如果我們減去 start 日期,來自 end 日期,我們將獲得 毫秒數 他們之間。

然後我們可以將這個毫秒數轉化為天數,將它除以一天中的毫秒數,得到兩個日期之間的天數。

注意: 這種方法包括 start 日期,但不包括 end 日期。

使用 js-joda 獲取 JavaScript 中日期之間的天數

熟悉 Java 的開發人員可能會熟悉廣泛使用的 Joda-Time 庫,該庫在 Java 8 修改 Date/Time API 之前非常流行。

Joda-Time 的影響激發了 js-joda 的創建——一個基於 ISO 日曆系統的通用 JavaScript 日期/時間庫。

另一個好處是它非常輕量級並且非常快,並且與 Moment.js 或 date-utils 等其他庫相比 ,它提供了自己的日期/時間對象實現,而不是依賴於 Date 來自原生 JavaScript 實現的類。

讓我們通過 vanilla JavaScript 導入庫:

<script
    src="https://cdnjs.cloudflare.com/ajax/libs/js-joda/1.11.0/js-joda.min.js" 
</script>

或者,如果您使用的是 NPM:

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

$ npm install js-joda

現在,我們可以使用 js-joda API。讓我們重寫之前的函數以使用 LocalDate 類,由 js-joda 提供 :

const JSJoda = require('js-joda');
const LocalDate = JSJoda.LocalDate;

function getNumberOfDays(start, end) {
    const start_date = new LocalDate.parse(start);
    const end_date = new LocalDate.parse(end);

    return JSJoda.ChronoUnit.DAYS.between(start_date, end_date);
}

console.log(getNumberOfDays("2021-02-01", "2021-03-01"));

這也導致:

28

注意: 這種方法也排除了 end_date .

結論

在本教程中,我們了解瞭如何在 JavaScript 中獲取日期之間的天數。除了內置方法,依賴 Date 類,我們還探索了 js-joda 庫,靈感來自 Java 驅動的 Joda-Time 庫,以獲得更簡潔的方法來解決這個問題。


Tutorial JavaScript 教程
  1. 創建 Vue.js 組件庫:第五部分 - 將文檔部署到 Netlify

  2. 我保證我不會再回調

  3. 很棒的開關按鈕動畫

  4. Animatly.io 動畫圖標和插圖平台

  5. 使用 Bootstrap 5 示例反應工具提示和彈出框

  6. Fre 離屏渲染:最快的vdom算法

  7. 用 D3 反應 Js

  1. 數組匹配 JavaScript |例子

  2. HTML5 Canvas 筆劃不跟隨鼠標 Y 點

  3. Nuxt.js:從零開始 => 快速上線

  4. Chakra-UI 響應式導航欄

  5. 在Javascript中將類添加到下一個兄弟元素

  6. 可變字體的樂趣!

  7. 到 JSC 還是不到 JSC:2020 年在 iOS 上運行 JavaScript

  1. 為什麼我喜歡 TailwindCSS,你也應該喜歡!

  2. 如何使用 while 循環向 App 腳本中的用戶輸入添加條件?

  3. 使用 Eleventy 時緩存 JavaScript 數據文件結果

  4. 回顧 jQuery Enlightenment - 和免費副本!