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

标签 javascript date timestamp

我有两个时间戳 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;
}

关于JavaScript:查找两个日期之间的差异(以年为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938627/

相关文章:

javascript - 如何对多个 DIV 使用 JQuery 切换?

sql - SQL将yyyy-MM-ddThh:mm:ssZ形式的字符串转换为datetime

java - 从 Java 日期/日历获取上季度最后日期

javascript - Angular slider 不显示

javascript - 构建应用程序时维护两个文件夹

batch-file - 如何在批处理文件结果的开头添加时间戳

python - 使用datastax python-driver从cassandra获取正确的时间戳

java - java中获取时间戳

javascript - 无法获取 strip 支付意图成功元数据

jquery - 如何使全日历中过去的日期不可选择?