在 JavaScript 中以 YYYY-MM-DD 格式計算給定出生日期的年齡

Tahseen Tauseef 2023年10月12日
  1. 在 JavaScript 中使用原生日期方法計算年齡給定 YYYY-MM-DD 格式的出生日期
  2. 在 JavaScript 中使用 Moment.js 庫以 YYYY-MM-DD 格式計算給定出生日期的年齡
  3. 使用 Vanilla JavaScript 以 YYYY-MM-DD 格式計算給定出生日期的年齡
在 JavaScript 中以 YYYY-MM-DD 格式計算給定出生日期的年齡

本文將介紹如何以 YYYY-MM-DD 格式計算給定出生日期的年齡。

在 JavaScript 中使用原生日期方法計算年齡給定 YYYY-MM-DD 格式的出生日期

給定 YYYY-MM-DD 的出生日期,我們可以使用本地日期方法來計算一個人的年齡。

const calculateAge = (birthday) => {
  const ageDifMs = Date.now() - new Date(birthday).getTime();
  const ageDate = new Date(ageDifMs);
  return Math.abs(ageDate.getUTCFullYear() - 1970);
} console.log(calculateAge('1999-11-23'))

輸出:

22

單擊並訪問此連結以檢視上述示例的工作程式碼。

解釋:

  • 首先,我們使用生日輸入構建了 calculateAge 函式,該函式需要一個日期字串進行轉換並用於計算年齡。
  • 我們從函式中減去 Date.now,其中包含當前日期時間的時間戳(以毫秒為單位)。
  • 我們構建了一個新的 Date 例項。然後,我們呼叫 getTime 來獲取我們經過的生日的毫秒精度時間戳。
  • 然後將結果分配給 ageDifMs.
  • 然後,我們將 ageDifMs 提供給日期函式 Object() {[native code]} 以接收 ageDate,,它是 1970 年 1 月 1 日午夜 UTC 形成的日期,加上由我們過去的時間。

在 JavaScript 中使用 Moment.js 庫以 YYYY-MM-DD 格式計算給定出生日期的年齡

我們還可以使用 Moment.js 庫來簡化日期計算。

const calculateAge = (birthday) => {
  const startDate = new Date();
  const endDate = new Date(birthday);
  return Math.abs(moment.duration(endDate - startDate).years());
} console.log(calculateAge('1999-11-23'))

輸出:

22

解釋:

  • 我們在 calculateAge 函式中使用了生日引數,和以前一樣。
  • 我們沒有使用本地日期方法,而是使用 moment.duration 方法確定持續時間。
  • 為了獲取即時持續時間物件,我們用 endDate - startDate 呼叫它。
  • 然後,我們用年數來表示時間長度。
  • 然後,我們使用 Math.abs 再次檢查結果是否為陽性。
  • 控制檯日誌應顯示與以前相同的資訊。

使用 Vanilla JavaScript 以 YYYY-MM-DD 格式計算給定出生日期的年齡

首先,我們獲取 HTML 檔案並建立一個 <div>,為其提供一個佔位符 id,稍後將在 JavaScript 中呼叫 innerhtml 的函式時使用它。

<div id="placeholder">
    <p>Changing Date of Birth in JavaScript</p>
</div>

然後,在 JS 文件中,我們首先建立一個變數 Date_of_Birth 來儲存一個人的出生日期。

var Date_of_Birth = 'November 23, 1999';
var millisecondsBetweenDOBAnd1970 = Date.parse(Date_of_Birth);
var millisecondsBetweenNowAnd1970 = Date.now();
var ageInMilliseconds =
    millisecondsBetweenNowAnd1970 - millisecondsBetweenDOBAnd1970;
var milliseconds = ageInMilliseconds;
var second = 1000;
var minute = second * 60;
var hour = minute * 60;
var day = hour * 24;
var month = day * 30;
var year = day * 365;

// Age is coverted by using tag `math`
var years = Math.round(milliseconds / year);
var months = years * 12;
var days = years * 365;
var hours = Math.round(milliseconds / hour);
var seconds = Math.round(milliseconds / second);

function printResults() {
  var message = 'Age in Years : ' + years + '</br>Age in Months : ' + months +
      '</br>Age in Days : ' + days + '</br>Age in Hours : ' + hours +
      '</br>Age in Seconds : ' + seconds +
      '</br>Age in Milliseconds : ' + milliseconds;
  document.getElementById('placeholder').innerHTML = message;
}
window.onload = printResults;

輸出:

Age in Years : 22
Age in Months : 264
Age in Days : 8030
Age in Hours : 195551
Age in Seconds : 703983954
Age in Milliseconds : 703983954456

你可以使用此連結執行此程式碼。

解釋:

Date.parse() 函式解析日期字串並返回從 1970 年 1 月 1 日午夜到該日期的毫秒數。自 1970 年 1 月 1 日起,Date.now() 函式返回毫秒數。

我們以這些函式為起點。為了保持 DOB/NOW 和 1970 年 1 月 1 日之間的毫秒數,我們建立了兩個新變數 millisecondsBetweenDOBAnd1970millisecondsBetweenNowAnd1970

然後,我們從 NOW 中減去 DOB 以找到一個人的年齡(以毫秒為單位)。當我們有一個人的以毫秒為單位的年齡時,我們必須實現一些基本邏輯來將其轉換為年、月、日、小時、分鐘和秒。

相關文章 - JavaScript Date