基于HTML+JS实现简单的年龄计算器

 更新时间:2021年12月07日 09:44:28   作者:海拥✘  
JavaScript提供了一些内置的日期和时间函数,有助于从日期(出生日期)开始计算年龄。本文主要介绍了使用这些JavaScript方法,制作一个简单的年龄计算器,快来跟随小编一起学习学习吧

前言

在线演示地址:http://haiyong.site/age-calculator

JavaScript提供了一些内置的日期和时间函数,有助于从日期(出生日期)开始计算年龄。使用这些JavaScript方法,您可以轻松找到任何人的年龄。为此,我们需要用户输入日期和当前系统日期。

演示效果

HTML代码

<div class="container">
        <div class="inputs-wrapper">
            <input type="date" id="date-input">
            <button onclick="ageCalculate()">Calculate</button>
        </div>
        <div class="outputs-wrapper">
            <div>
                <span id="years">
                    -
                </span>
                <p>
                    Years
                </p>
            </div>
            <div>
                <span id="months">
                    -
                </span>
                <p>
                    Months
                </p>
            </div>
            <div>
                <span id="days">
                    -
                </span>
                <p>
                    Days
                </p>
            </div>
        </div>
    </div>

CSS代码

*,
*:before,
*:after{
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}
body{
    background-color: #ff6666;
}
.container{
    width: 40%;
    min-width: 450px;
    position: absolute;
    transform: translate(-50%,-50%);
    left: 50%;
    top: 50%;
    padding: 50px 30px;
}
.container *{
    font-family: "Poppins",sans-serif;
    border: none;
    outline: none;
}
.inputs-wrapper{
    background-color: #080808;
    padding: 30px 25px;
    border-radius: 8px;
    box-shadow: 0 15px 20px rgba(0,0,0,0.3);
    margin-bottom: 50px;
}
input,
button{
    height: 50px;
    background-color: #ffffff;
    color: #080808;
    font-weight: 500;
    border-radius: 5px;
}
input{
    width: 60%;
    padding: 0 20px;
    font-size: 14px;
}
button{
    width: 30%;
    float: right;
}
.outputs-wrapper{
    width: 100%;
    display: flex;
    justify-content: space-between;
}
.outputs-wrapper div{
    height: 100px;
    width: 100px;
    background-color: #080808;
    border-radius: 5px;
    color: #ffffff;
    display: grid;
    place-items: center;
    padding: 20px 0;
    box-shadow: 0 15px 20px rgba(0,0,0,0.3);

}
span{
    font-size: 30px;
    font-weight: 500;
}
p{
    font-size: 14px;
    color: #707070;
    font-weight: 400;
}

Javascript代码

const months = [31,28,31,30,31,30,31,31,30,31,30,31];

function ageCalculate(){
    let today = new Date();
    let inputDate = new Date(document.getElementById("date-input").value);
    let birthMonth,birthDate,birthYear;
    let birthDetails = {
        date:inputDate.getDate(),
        month:inputDate.getMonth()+1,
        year:inputDate.getFullYear()
    }
    let currentYear = today.getFullYear();
    let currentMonth = today.getMonth()+1;
    let currentDate = today.getDate();

    leapChecker(currentYear);

    if(
        birthDetails.year > currentYear ||
        ( birthDetails.month > currentMonth && birthDetails.year == currentYear) || 
        (birthDetails.date > currentDate && birthDetails.month == currentMonth && birthDetails.year == currentYear)
    ){
        alert("Not Born Yet");
        displayResult("-","-","-");
        return;
    }

    birthYear = currentYear - birthDetails.year;

    if(currentMonth >= birthDetails.month){
        birthMonth = currentMonth - birthDetails.month;
    }
    else{
        birthYear--;
        birthMonth = 12 + currentMonth - birthDetails.month;
    }

    if(currentDate >= birthDetails.date){
        birthDate = currentDate - birthDetails.date;
    }
    else{
        birthMonth--;
        let days = months[currentMonth - 2];
        birthDate = days + currentDate - birthDetails.date;
        if(birthMonth < 0){
            birthMonth = 11;
            birthYear--;
        }
    }
    displayResult(birthDate,birthMonth,birthYear);
}

function displayResult(bDate,bMonth,bYear){
    document.getElementById("years").textContent = bYear;
    document.getElementById("months").textContent = bMonth;
    document.getElementById("days").textContent = bDate;
}

function leapChecker(year){
    if(year % 4 == 0 || (year % 100 == 0 && year % 400 == 0)){
        months[1] = 29;
    }
    else{
        months[1] = 28;
    }
}

演示地址

http://haiyong.site/age-calculator 

以上就是基于HTML+JS实现简单的年龄计算器的详细内容,更多关于HTML JS 年龄计算器的资料请关注脚本之家其它相关文章!

相关文章

  • 微信小程序日历插件代码实例

    微信小程序日历插件代码实例

    这篇文章主要介绍了微信小程序日历插件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • javascript递归函数定义和用法示例分析

    javascript递归函数定义和用法示例分析

    这篇文章主要介绍了javascript递归函数定义和用法示例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • JS根据生日算年龄的方法

    JS根据生日算年龄的方法

    这篇文章主要介绍了JS根据生日算年龄的方法,涉及javascript操作时间的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • javascript 最常用的10个自定义函数[推荐]

    javascript 最常用的10个自定义函数[推荐]

    如果不使用类库或者没有自己的类库,储备一些常用函数总是有好处的。
    2009-12-12
  • javascript函数的4种调用方式与this的指向

    javascript函数的4种调用方式与this的指向

    本文主要介绍了javascript函数的4种调用方式与this(上下文)的指向,文中有详细的代码示例,感兴趣的同学可以参考阅读一下
    2023-05-05
  • 详解async/await 异步应用的常用场景

    详解async/await 异步应用的常用场景

    这篇文章主要介绍了详解async/await 异步应用的常用场景,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 详解jQuery插件开发方式

    详解jQuery插件开发方式

    本文介绍了jQuery扩展、私有域、定义插件的基本步骤等知识,有需要的朋友可以看下
    2016-11-11
  • input禁止键盘及中文输入,但可以点击

    input禁止键盘及中文输入,但可以点击

    这篇文章主要介绍了<input>禁止键盘及中文输入,但可以点击。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • 微信小程序日期增加时间完成订单失效倒计时效果

    微信小程序日期增加时间完成订单失效倒计时效果

    这篇文章主要介绍了微信小程序日期增加时间完成订单失效倒计时效果,在我们日常购物过程中经常会遇到这样的功能,本文通过示例代码给大家详细讲解,需要的朋友参考下吧
    2024-04-04
  • 举例分析HTTP 302 Redirect工作原理

    举例分析HTTP 302 Redirect工作原理

    这篇文章主要为大家介绍了关于HTTP 302 Redirect的举例分析,让大家理解HTTP 302 Redirect工作原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2023-12-12

最新评论