javascript计算从生日开始的日子

时间:2014-04-16 15:51:40

标签: javascript function date calculator 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;

我对javascript不是很熟悉,你能告诉我哪里出错吗?感谢。

2 个答案:

答案 0 :(得分:2)

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)));

答案 1 :(得分:0)

我喜欢这个时刻的js库。 http://momentjs.com/

这就是你用moment.js

做的方法
var today = moment(); 
var birthDate = moment([2000, 12, 31]);  // 2000 (year), 12 (month), 31 (day)
var daysDiff = today.diff(birthDate, 'days'); //4823

如果你想要多年的差异

var yearsDiff = today.diff(birthDate, 'years'); //13