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

如何在 JavaScript 中獲取當前日期

簡介

無論您是創建日常應用程序、您自己的博客還是大多數其他類型的動態 Web 應用程序,您都可能需要使用日期。在本文中,我們將學習如何在 JavaScript 中獲取當前日期,以便您成功開發應用程序。在 JavaScript 中,有很多選項可供選擇,但使用的主要類是 Date() .它有很多方法,你如何使用它取決於你想要獲取的日期的格式。之後,我將向您展示一個流行的 JavaScript 庫,它可以用於格式化時間,而不僅僅是日期。

使用 Date()

Date() 在談論時間時,它是 JavaScript 中的首選類。有幾種方法可以從這個類中以細粒度的方式獲取時間和日期!

使用 getDate() , getMonth()getFullYear() 方法

getDate 方法注意事項 :使用這種方法時首先要注意的是我們使用 getDate 而不是 getDay .原因是 getDay 方法返回星期幾,所以現在是星期五,因為我正在寫,getDay 方法將返回 5。方法 getDate 在這種情況下實際上做了我們需要的事情,它返回月份中的日期。所以對我來說,現在這個月的日期是 21 日(因為它是 21.05.2021。)。這些方法很容易混淆,所以我想提個醒。

getMonth 方法注意事項 :還有一點需要注意的是月份索引是從0開始的,所以一月是0,二月是1,等等。基本上,當我們檢索月份數時,我們需要加1。

現在我們已經解決了潛在的問題,讓我們編寫代碼:

let date = new Date()
let day = date.getDate();
let month = date.getMonth()+1;
let year = date.getFullYear();

let fullDate = `${day}.${month}.${year}.`;
console.log(fullDate);

首先,我們實例化類 Date 對於日期的每一部分,我們使用一個變量來分解並檢查每一部分。

我們將每個方法的結果放在一個單獨的變量中,然後使用字符串插值來創建一個完整的日期。字符串插值是當我們將變量傳遞給字符串時;在 JavaScript 中,這是在反引號 ( `` ) 之間實現的,變量放在 ${variableName} 中 .如果您不喜歡字符串插值,另一種方法是簡單地 concatenate 像這樣(添加)字符串:

let fullDate = day + "." + month + "." + year + ".";

我們的結果在每種情況下都是一樣的:

21.5.2021. // string interpolation
21.5.2021. // string concatenation

假設您想將月份顯示為 05 而不是 5 .不幸的是 JavaScript 的內置 Date 類沒有很多選項可以像其他庫那樣將日期格式化為字符串。所以在這種情況下,我們需要自己進行格式化,我們可以使用 JavaScript 的一些字符串方法來完成,比如 padStart(length, substring) .它的作用是用 substring '填充'(放在前面)我們的字符串 , 直到達到 length .所以既然我們要製作 05 來自 5 ,我們想用“0”填充我們的字符串,直到它達到長度 2。在這之前,我們需要 cast date.getMonth()+1 輸入 String . 選角 顯式地將變量的類型從一種更改為另一種。這裡我們改變類型 number 鍵入 String .我們的 month 變量將變為:

let month = String(date.getMonth()+1).padStart(2, "0");

這會將我們的日期格式更改為:

21.05.2021.

使用 toJSON() 方法

以前的方法為日期格式留出了空間;你可以有一個像 dd/mm/yyyy 這樣的日期 , dd-mm-yyyy , dd.mm.yyyy 以及與日、月和年的順序有關的所有其他變體。使用 toJSON() 時 ,它返回一個 yyyy-mm-dd 時間格式旁邊的格式,hh:mm:ss.ms .

讓我們預覽一下這種方法:

let date = new Date().toJSON();
console.log(date);

這將輸出:

2021-05-21T13:42:07.553Z

您應該會看到與此類似的輸出,但顯然您的輸出會根據您運行代碼的時間而有所不同。我們看到我們只需要日期,即前 10 個字符,所以讓我們使用 JavaScript 的 slice() 方法。方法 slice(a, b) 從點 a 切分字符串 指向 b;在我們的示例中從 0 到 10。讓我們嘗試一下:

let date = new Date().toJSON().slice(0, 10);

這將返回:

2021-05-21

我們可以進一步切片這個字符串,所以我們可以將部分排列到變量 day, monthyear ,但這樣做會過頭,所以如果您需要不同的格式,只需使用不同的方法即可。

使用toISOString() ,_ toUTCString()_ 和 toLocaleDateString() 方法

有趣的事實:toISOString() 返回與 toJSON() 完全相同的結果 ,所以我們將跳過它直接進入 toUTCString() .

使用 toUTCString()
let date = new Date().toUTCString();
console.log(date);

會給我們輸出:

Fri, 21 May 2021 13:53:30 GMT

此格式還返回日期和時間,加上星期幾。正如我在 toJSON() 中所說 部分,您可以進一步解析此結果,但可能沒有必要,因為您有不同的方法。因為我們只得到日期,我們可以把它切片。現在不需要強制轉換了,因為這已經是 String

免費電子書:Git Essentials

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

let date = new Date().toUTCString().slice(5, 16);

這將為我們提供所需的輸出:

21 May 2021
使用 toLocaleDateString()

此方法以與您的系統語言相對應的格式返回日期。它甚至可以選擇將所需語言作為參數傳遞,甚至可以選擇簡單的日期格式選項,例如 weekday , month , day 等。我們將其分為3個例子:

  1. 默認選項

    讓我們看看當我們調用不帶任何參數的方法時會發生什麼:

    let date = new Date().toLocaleDateString();
    console.log(date);
    

    輸出,為我 , 將是:

    5/21/2021
    

    此輸出取決於您的語言環境,我的是美國,因此格式將是美國日期格式。

  2. 只傳遞語言偏好

    如果要定義特定的語言環境,可以將其作為字符串參數傳遞,如下所示:

    let date = new Date().toLocaleDateString("fr-FR");
    console.log(date);
    

    fr-FR 是法國的語言環境代碼。您可以在此處找到所有語言環境代碼。

    法國日期格式為 dd/mm/yyyy ,所以輸出將是:

    21/5/2021
    
  3. 同時傳遞語言偏好和選項

    最後,讓我們看看可能的選項。僅工作日 可以有一個“長”值 “數字”。 只能是“數字”:

    • 年份
    • 工作日
const dateOptions = { 
    day: 'numeric',
    month: 'long',
    year: 'numeric'
};

console.log(event.toLocaleDateString('fr-FR', dateOptions));

我們將排除 weekday 因為我們只需要日期。這應該輸出:

21 mai 2021

現在你也學了一點法語。

使用 now()

方法 now() 返回從 1970 年 1 月 1 日開始經過的毫秒數 - 這是 Unix 編程時代的開始。如果我們將毫秒數傳遞給 Date 構造函數,我們可以得到一個 ISO 格式的日期。讓我們試試吧:

let time = Date.now()
console.log(time);

這將再次輸出 為我

1621608925212

現在如果我們通過 time 對於構造函數,如上所述,我們可以創建一個帶有該時間的日期對象:

let date = new Date(time);
console.log(time);

這將輸出:

2021-05-21T14:55:25.212Z

我們已經知道如何處理這個,使用 slice() .

使用 moment.js

這只是使用所有先前方法的替代方法,這是一個專門為 JavaScript 中的日期和時間製作的庫。你可以在這裡訪問他們的網站。雖然這個庫有很多功能,但我只會介紹如何為日期創建和進行簡單的格式化。讓我們看看它是如何工作的:

moment.format();
moment.format('Do MMMM YYYY');
moment.format('Do MMMM YY');

如果您不傳遞任何內容來格式化,您將獲得日期的 ISO 表示,但是,您可以選擇您想要的任何格式(並且在 Moment 的文檔中定義)。

上面的代碼會輸出:

2021-05-21T17:17:02+02:00
May 21st 2021
May 21st 21

如果您要查找的只是檢索當前日期,則此選項不是最佳選擇。這是因為 Moment 庫非常大,在前端應用程序中使用時會使您的 JS 代碼膨脹。另一方面,如果您需要日期和時間操作或更高級的格式,這是一個很棒的庫。

結論

在 JavaScript 中檢索日期的方法有很多種,您只需要選擇一種適合您的用例即可。對於非常簡單的需求,例如創建日期或非常簡單的格式,則可以使用內置的 Date 班級。如果您需要更複雜的日期和時間,moments.js 是一個可供選擇的庫。


Tutorial JavaScript 教程
  1. JavaScript 相對時間

  2. 如何為 WordPress 創建 Mailchimp 訂閱表單小部件

  3. 如何使用展開和休息運算符

  4. 開始使用 Vitest

  5. 從特定消息中刪除特定用戶反應 – Discord.js

  6. 2022 年,不要使用 console.log(😎)

  7. 從頭開始使用 Node 創建一個 P2P 網絡。

  1. Javascript Set CSS:使用 javascript 設置 CSS 樣式

  2. 帶滾動條的動畫

  3. Javascript - 獲取兩個日期之間的日期數組

  4. 如何考慮 JavaScript 安全性

  5. 以 SaaS 形式推出 3 層應用程序

  6. 為 Web 構建代碼編輯器 - 項目設置

  7. Node.js:逐行讀取文件

  1. 征服求職面試代碼挑戰 v2.0

  2. 使用 Context API 響應全局狀態管理(沒有 Redux)

  3. 讓我們使用 ExpressJs 服務器上傳文件

  4. 套接字集群。最被低估的框架。第 2 部分:一個簡單的示例