给定 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);
}
- 首先,我们使用生日输入构建了
calculateAge
函数,该函数需要一个日期字符串进行转换并用于计算年龄。 - 我们从函数中减去
Date.now
,其中包含当前日期时间的时间戳(以毫秒为单位) - 我们构建了一个新的 Date 实例。然后,我们调用
getTime
来获取我们经过的生日的毫秒精度时间戳。 - 然后将结果分配给
ageDifMs
- 然后,我们将
ageDifMs
提供给日期函数Object() {[native code]}
以接收ageDate,
,它是 1970 年 1 月 1 日午夜 UTC 形成的日期,加上由我们过去的时间。
下面是执行代码
console.log(calculateAge('2008-07-31'))
使用时的实例代码
<p id="placeholder">
<script>
message = calculateAge("2008-07-31")
document.getElementById("placeholder").innerHTML = message;
</script>
全部放一起,就是下面的效果:
<!-- 烨然Hvril/2024-08-09 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
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('2008-07-31'))
</script>
<p id="placeholder">
<script>
message = calculateAge("2008-07-31")
document.getElementById("placeholder").innerHTML = message;
</script>
</body>
</html>
执行后(依次是终端与HTML页面)
使用 Vanilla JavaScript
以 YYYY-MM-DD 格式计算给定出生日期的年龄
Vanilla JS——世界上最轻量的JavaScript框架(没有之一),其是一个快速、轻量级、跨平台的JavaScript框架。我们可以用它构建强大的JavaScript应用程序。
Vanilla JS是世界上最轻量的javascript 框架(沒有之一),使用我们的产品部署策略,你的用户的浏览器向你的站点发送请求前就已经把Vanilla JS加载在浏览器里了。
如果不放心,可以加入下面这行代码,但加不加其实效果一毛一样~
<script src="path/to/vanilla.js"></script>
如果你难理解的话,但看到这个的时候,你就知道他的亲切了
document.getElementById('test');
首先,我们获取 HTML 文件并创建一个 <p>
,为其提供一个占位符 id,稍后将在 JavaScript 中调用 innerhtml
的函数时使用它。
<p id="placeholder">Changing Date of Birth in JavaScript</p>
然后,在 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 日之间的毫秒数,我们建立了两个新变量
millisecondsBetweenDOBAnd1970
和millisecondsBetweenNowAnd1970
。 - 然后,我们从 NOW 中减去 DOB 以找到一个人的年龄(以毫秒为单位)。当我们有一个人的以毫秒为单位的年龄时,我们必须实现一些基本逻辑来将其转换为年、月、日、小时、分钟和秒。
一个运用之后的实例代码
<!-- 烨然Hvril/2024-08-09 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
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;
</script>
<p id="placeholder">
</body>
</html>
——END——
© 版权声明
分享是一种美德,转载请保留原链接
发现评论条评论