JavaScript: Finding a difference between two dates in years -
i've got 2 timestamps e1 , e2 (both expressed in milliseconds since jan 1st 1970). want know difference between them in years (including parts of years - e.g. 2.74 acceptable result).
dividing (e2 - e1) 31536000000 not right idea because of leap years. there elegant solution ?
the ideas in comment nice. however, need determine if 1 of timestamps leap year. simple find difference between first date , second date, comparing timestamps without years. example: http://jsfiddle.net/en8qg/
function compareyears(t1, t2) { var day = 24 * 3600 * 1000, year = 365 * day, d1 = new date(t1), d2 = new date(t2), y1 = d1.getfullyear(), y2 = d2.getfullyear(), isleap1 = new date(y1, 1, 29).getmonth() == 1, isleap2 = new date(y2, 1, 29).getmonth() == 1, ms1 = t1 - date.utc(y1, 0, 0), ms2 = t2 - date.utc(y2, 0, 0), diff = ms2 - ms1, rest; if (isleap1 && isleap2) { //two leap years rest = diff / year; } else if (isleap1) { rest = diff / (year + day); } else if (isleap2) { rest = diff / (year + day); } else { rest = diff / year; } return y2 - y1 + rest; }
Comments
Post a Comment