[英]javascript calculate days lived from birthday
Im trying to make a script which calculate the days you live. 我正在尝试制作一个脚本来计算您的生活时间。 My idea is the user to select their birthday by clicking buttons.
我的想法是用户通过单击按钮选择生日。 I read some scripts and wrote some questions and finally a good guy sent me this code, but it isn working for me.. JSFIDDLE
我读了一些脚本并写了一些问题,最后一个好人向我发送了这段代码,但是它对我有用。.JSFIDDLE
function IncrementDay(month,year)
{
var lastDay = new Date(year, month, 0).getDate();
var nDay=document.getElementById("bday").value;
++nDay;
if (nDay > lastDay) {
nDay =1;
}
document.getElementById("bday").value=nDay;
}
function IncrementMonth(from_IncrementDay = false)
{
var nMonth = document.getElementById("bmonth").value;
++nMonth;
if (nMonth==13) {
nMonth =1;
}
document.getElementById("bmonth").value=nMonth;
}
function isValidDate(s) {
var bits = s.split('/');
var y = bits[0], m = bits[1], d = bits[2];
// Assume not leap year by default (note zero index for Jan)
var daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
// If evenly divisible by 4 and not evenly divisible by 100,
// or is evenly divisible by 400, then a leap year
if ( (!(y % 4) && y % 100) || !(y % 400)) {
daysInMonth[1] = 29;
}
return d <= daysInMonth[--m]
}
function days_between(date1, date2) {
// The number of milliseconds in one day
var ONE_DAY = 1000 * 60 * 60 * 24
// Convert both dates to milliseconds
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()
// Calculate the difference in milliseconds
var difference_ms = Math.abs(date1_ms - date2_ms)
// Convert back to days and return
return Math.round(difference_ms/ONE_DAY)
}
function calculate() {
var _bd = document.getElementById('byear').value + "/" + document.getElementById('bmonth').value + "/" + document.getElementById('bday').value;
if (!isValidDate(_bd)) return;
var _days = days_between(new Date(), new Date(_bd));
document.getElementById("days").innerHTML = _days;
}
var cDate= new Date();
var cDay = cDate.getDate();
var cMonth = cDate.getMonth();
var cYear = cDate.getFullYear();
var days_gone = 0;
++cMonth;
document.getElementById("bday").value=cDay;
document.getElementById("bmonth").value=cMonth;
document.getElementById("byear").value=cYear;
Im not very familiar with javascript, can you tell me where's the mistake? 我对javascript不太熟悉,您能告诉我哪里出了问题吗? thanks.
谢谢。
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2008,01,12);
var secondDate = new Date();
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
I like the moment js library for this. 我喜欢此刻的js库。 http://momentjs.com/
http://momentjs.com/
This is how you would do it with moment.js 这就是您使用moment.js的方式
var today = moment();
var birthDate = moment([2000, 12, 31]); // 2000 (year), 12 (month), 31 (day)
var daysDiff = today.diff(birthDate, 'days'); //4823
if you want the difference in years 如果你想几年的差异
var yearsDiff = today.diff(birthDate, 'years'); //13
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.