如何在JavaScript中轉換CFAbsoluteTime為日期物件,反之亦然?


CFAbsoluteTime是自2001年1月1日00:00:00 UTC以來經過的時間。這是蘋果裝置上的標準時間格式。另一方面,日期物件是JavaScript中用於表示日期和時間值的內建物件。它有很多方法可以提供格式化和將日期和時間從一種形式轉換為另一種形式。

CFAbsolute Time和JavaScript日期物件之間的主要區別在於它們的格式。CFAabsolute時間是一個數值,表示自Unix紀元以來的毫秒數,而日期物件是一個物件,表示相對於客戶端瀏覽器而言的特定日期和時間、年、月、日、小時、分鐘、秒和毫秒。

在本教程中,我們學習了以下兩種方法:

  • 將CFAbsoluteTime轉換為日期物件

  • 將日期物件轉換為CFAbsoluteTime

將CFAbsoluteTime轉換為日期物件

CFAbsoluteTime是自2001年1月1日00:00:00 UTC以來經過的時間,而日期物件是自1970年1月1日00:00:00 UTC以來經過的時間,因此我們需要將兩者之間的差值(978307200)新增到CFAbsoluteTime,並且單位是毫秒,因此還需要額外將結果乘以1000。

讓我們一步一步地瞭解更清晰的步驟。

  • 初始化一個CFAbsoluteTime值,我們將將其轉換為日期物件值。

  • 建立一個新的日期物件,傳入初始化的值,並向其新增978307200,然後將其乘以1000(因為它是毫秒)。

  • 最後,列印結果。

示例

在這個例子中,我們使用JavaScript將CFAbsoluteTime轉換為日期物件。

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Converting CFAbsoluteTime to Date Object in JavaScript</title>
</head>
<body>
   <h2> Convert CFAbsoluteTime to Date Object </h2>
   <p id="input">CFAbsoluteTime: </p>
   <p id="output">Date Object: </p>
   <script>
      // CFAbsoluteTime
      let CFAbsoluteTime = 641347496.743657;
      document.getElementById("input").innerHTML += CFAbsoluteTime ;
      
      // Convert CFAbsoluteTime to Date Object
      let date = new Date((CFAbsoluteTime + 978307200)  * 1000);
      
      // Display the result
      document.getElementById("output").innerHTML += date;
   </script>
</body>
</html>

將日期物件轉換為CFAbsoluteTime

要將CFAbsoluteTime轉換為日期物件,我們需要執行與之前將CFAbsoluteTime轉換為日期物件的相反操作。

以下是使用JavaScript將CFAbsoluteTime轉換為日期物件的逐步過程:

  • 使用作為引數傳入的日期和時間初始化一個日期物件,我們將將其轉換為CFAbsoluteTime。

  • 然後使用上述物件上的getTime()方法並將其除以1000,記住在上面一步中我們乘以了1000,這裡我們只是反轉了這個過程。

  • 然後最後用結果減去978307200,就像我們在將CFAbsoluteTime轉換為日期物件時加上的那樣。

  • 最後,列印結果。

示例

在這個例子中,我們使用JavaScript將CFAbsoluteTime轉換為日期物件。

<!DOCTYPE html>
<html lang="en">
<head>
   <title>Converting Date Object to CFAbsoluteTime JavaScript</title>
</head>
<body>
   <h2> Convert Date Object to CFAbsoluteTime </h2>
   <p id="input">Date Object: </p>
   <p id="output">CFAbsoluteTime: </p>
   <script>
      // Creting date object
      var date = new Date("June 15, 2023 16:16:36");
      document.getElementById("input").innerHTML += date;
      
      // convert date to CFAbsoluteTime
      var CFAbsoluteTime = (date.getTime() / 1000) - 978307200;
      
      // display CFAbsoluteTime
      document.getElementById("output").innerHTML += CFAbsoluteTime;
   </script>
</body>
</html>

總結

讓我們總結一下在本教程中學到的內容。我們看到,要將CFAbsoluteTime轉換為日期物件或將日期物件轉換為CFAbsoluteTime,我們只需要執行一個簡單的數學運算。我們需要看到這兩個時間之間有兩個區別,CFAbsoluteTime是自2001年1月1日00:00:00 UTC以來經過的時間,而日期物件是自1970年1月1日00:00:00 UTC以來經過的時間。因此,它們之間的差值為978307200,我們可以用加法或減法將其從一種形式轉換為另一種形式。第二個是單位,CFAbsoluteTime的單位是毫秒,我們可以透過乘以1000來轉換,反之亦然。

更新於:2023年4月21日

386 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告