JavaScript 中的字串轉日期


本文將討論如何在 JavaScript 中將字串值轉換為 Date 物件。有兩種方法可以實現這一點:

使用 Date 類建構函式 - 此建構函式接受表示日期值的字串值,將其轉換為 Date 物件,並返回結果。

使用 Date.parse() 方法 - 與 Date 建構函式相同,此方法接受字串值,解析並以毫秒形式返回日期值。

讓我們透過示例來看看這些解決方案:

使用 Date() 建構函式

將字串轉換為日期物件最常用的方法是使用Date()類的建構函式。以下是 Date 建構函式的語法:

var date = new Date('date_string');

它接受各種形式的引數。

  • 新的Date()返回當前系統日期和時間,包括本地系統的時區資訊。如果您沒有在新 Date() 函式中傳遞引數。

  • 將日期物件作為引數傳遞。新的Date()將返回由作為引數傳遞的日期字串呈現的日期物件。

  • 當我們將字串格式的日期傳遞給新的Date()時,它將被轉換為日期物件。為了使其工作,字串格式需要為yyyy-mm-dd。其他日期格式可能無法透過此方法轉換為日期物件。

示例

在這個例子中,我們檢查哪個日期格式在Date類的建構函式中有效。

<!DOCTYPE html>
<html lang="en">
<head>
   <title></title>
</head>
<body>
   <script>
      var date1 = new Date("2022-08-04"); // here we are taking yyyy-mm-dd format
      var date2 = new Date("2022/08/03"); // here we are taking yyyy/mm/dd format
      var date3 = new Date("2022-15-03"); // here we are taking yyyy/dd/mm format
      var date4 = new Date("15-02-2022"); // here we are tacking dd/mm/yyyy format

      document.write(date1 + "<br>");
      document.write(date2 + "<br>");
      document.write(date3 + "<br>");
      document.write(date4 + "<br>");
   </script>
</body>
</html>

注意 - 只有當新的 Date()符合ISO 8601 格式yyyy-mm-dd hh-mm-ss時,才能用於將字串轉換為日期。

使用 date.parse() 方法

Date.Parse()是轉換字串日期的另一種解決方案。它返回一個數值,而不是日期物件。因此,如果您期望得到一個日期物件,則需要進一步處理。

此方法將給定的日期轉換為表示毫秒的數值。返回值是從1970年1月1日午夜開始的毫秒數。它與時間戳格式相同,區別在於Date.parse()返回毫秒值,而不是秒值。

示例

在下面的示例中,我們將字串日期轉換為日期格式。但這裡的返回值是毫秒

<!DOCTYPE html>
<html lang="en">
<body>
<p>Date.Parse Method</p>
   <script>
      var date1 = Date.parse("2022-08-04"); // here we are taking yyyy-mm-dd format
      var date2 = Date.parse("2022/08/03"); // here we are taking yyyy/mm/dd format
      var date3 = Date.parse("2022-15-03"); // here we are taking yyyy/dd/mm format
      var date4 = Date.parse("15-02-2022"); // here we are tacking dd/mm/yyyy format

      document.write(date1 + "<br>");
      document.write(date2 + "<br>");
      document.write(date3 + "<br>");
      document.write(date4 + "<br>");
   </script>
</body>
</html>

注意 -

  • Date.parse()與 new Date() 相同,除了返回型別不同,這使得它最適合檢查日期值是否具有正確的格式,也可以透過使用dateObj.setTime(Date.parse(DateString))來分配日期。

  • Date.Parse()返回毫秒,即使不將它們轉換為具有new Date()的實際日期物件,也可以用於精確比較日期。

示例

在下面的示例中,我們可以看到,當涉及到它可以接受的輸入值型別時,Date.parse()與 new Date()相同,但前提是日期格式有效。

尤其是在處理 API 響應值時。在這種情況下,我們可能需要執行檢查以確保後端返回的值確認 Date.parse() 或甚至 new Date() 函式接受的日期格式。只需一個isNaN()檢查就可以幫助識別並安全地進入日期轉換方法。

<!DOCTYPE html>
<html lang="en">
<body>
   <p>Date.Parse Method and new Date() Method</p>
   <script>
      let stringsFromAPI = ["2022-08-04", "20-11-2022"];
      stringsFromAPI.forEach((d) => {
         if (!isNaN(Date.parse(d))) {
            console.log(new Date(d));
         }
      });
   </script>
</body>
</html>

更新於:2022年12月19日

4K+ 瀏覽量

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.