查找以年为单位的两个日期之间的差异

JavaScript: Finding a difference between two dates in years

本文关键字:日期 两个 之间 为单位 查找      更新时间:2023-09-26

我有两个TimeStamps e1和e2(自1970年1月1日以来都以毫秒表示)。我想知道它们之间的年份差异是什么(包括年份的部分-例如2.74是可以接受的结果)

(e2 - e1)除以31536000000是不正确的,因为有闰年。

你评论中的想法很好。但是,您只需要确定是否只有一个时间戳是闰年。然后简单地找出第一次约会和第二次约会之间的区别,通过比较没有年份的时间戳。例如: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;
}