簡體   English   中英

JavaScript:找出年份中兩個日期之間的差

[英]JavaScript: Finding a difference between two dates in years

我有兩個時間戳記e1和e2(自1970年1月1日以來都以毫秒表示)。 我想知道兩者之間的年數有什么區別(包括部分年份-例如2.74是可以接受的結果)。

由於leap年,將(e2-e1)除以31536000000是不正確的主意。 有一個優雅的解決方案嗎?

您評論中的想法很好。 但是,您只需要確定時間戳中是否只有一個是a年。 然后,通過比較不帶年份的時間戳,簡單地找出第一日期和第二日期之間的區別。 例如: 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM