在 JavaScript 中以 YYYY-MM-DD 格式计算给定出生日期的年龄

Tahseen Tauseef 2023年1月30日 2022年5月1日
  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