简体   繁体   English

javascript计算生日那天起的日子

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM