2020-03-15 11:56:23
围观(3955)
上周在某个群里看到有人分享了一个“生命计算器”,今天周末无聊,就想着“造个轮子”实现一次这个计算器。
效果图:

DEMO:生命计算
和群里的那个效果差不多,其实实现这个计算器挺简单的,下面就直接上代码
<!DOCTYPE html>
<html>
<head>
<title>生命计算 - www.bubaijun.com</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="viewport" content="initial-scale=1, width=device-width, maximum-scale=1, user-scalable=no">
<style type="text/css">
body{
background: #eee;
}
.box{
max-width: 500px;
width: 80%;
margin: 0 auto;
text-align: center;
margin-top: 15%;
background: #fff;
padding: 30px;
border-radius: 3px;
line-height: 50px;
}
.lab{
max-width: 130px;
width: 20%;
display: inline-block;
}
.content{
max-width: 360px;
width: 70%;
display: inline-block;
text-align: left;
}
.input{
padding: 5px;
border-radius: 3px;
border: 1px solid #ddd;
max-width: 250px;
width: 100%;
}
.start{
width: 130px;
height: 30px;
border-radius: 3px;
border: none;
background: #0ae;
color: #fff;
}
.info{
line-height: 20px;
display: none;
}
.copyright{
margin-top: 20px;
text-align: center;
font-size: 12px;
}
.copyright a{
color: #000;
}
</style>
</head>
<body>
<div class="box">
<div class="lab">生日:</div>
<div class="content">
<input type="date" id="birthday" class="input" value="2020-03-15">
</div>
<div class="lab">寿命:</div>
<div class="content">
<input type="number" id="lifetime" placeholder="请输入期望活到多少岁" class="input">
</div>
<button class="start" id="start">计 算</button>
<div class="info" id="info">
<p>到目前,您已经生活了 <b id="lifetime_start"></b> 天</p>
<p>假如您的寿命是到 <b id="lifetime_end"></b> 结束,还能生活 <b id="lifetime_days"></b> 天</p>
</div>
</div>
<div class="copyright">
<p>cherish life</p>
<p>www.bubaijun.com</p>
<p>Copyright © <a href="https://www.bubaijun.com">不败君</a> 粤ICP备18102917号-1</p>
</div>
<script type="text/javascript">
document.getElementById("start").onclick = function(e)
{
var birthday = document.getElementById("birthday");
var lifetime = document.getElementById("lifetime");
var lifetime_start = document.getElementById("lifetime_start");
var lifetime_end = document.getElementById("lifetime_end");
var lifetime_days = document.getElementById("lifetime_days");
var info = document.getElementById("info");
birthday = birthday.value;
if (!birthday) {
alert('请选择出生日期');
return;
}
lifetime = lifetime.value;
if (!lifetime) {
alert('请输入寿命');
return;
}
var date = new Date();
date.setTime(date.getTime());
var today = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
var start_days = compute(birthday, today);
if (start_days < 0) {
alert('请选择正确的出生日期');
return;
}
lifetime_start.innerHTML = start_days;
lifetime_end_date = add_year_nums_date(birthday, lifetime);
lifetime_end.innerHTML = lifetime_end_date['date_string'];
lifetime_days.innerHTML = compute(today, lifetime_end_date['date']);
info.style.display = 'block';
}
function compute(date_start, date_end)
{
var start_date = Date.parse(date_start);
var end_date = Date.parse(date_end);
return Math.ceil((end_date - start_date) / (1 * 24 * 60 * 60 * 1000));
}
function add_year_nums_date(date_start, year_nums) {
year_nums = parseInt(year_nums);
var month_nums = year_nums * 12;
var year = parseInt(date_start.substr(0, 4));
var month_day = date_start.substr(4);
return {
date: new Date((year + year_nums) + month_day),
date_string: (year + year_nums) + month_day
};
};
</script>
</body>
</html>有兴趣还可以再加一些计算结果,比如将计算结果精细到分钟或者小时之类的。