2016-07-06 47 views
3

我想獲得包含在給定日期範圍內的年份。MomentJs獲取年數 - 不差

這樣的用戶和輸入2015年12月1日至7月。 2016年第一次。我可以得到2015年,但我還需要包括2016年。

目前我做的年兩個日期之間的區別:

var tmpStart = moment($scope.dates1.startDate); 
    var tmpEnd = moment($scope.dates1.endDate); 
    var years = tmpEnd.diff(tmpStart, 'year'); 
    for (var i = 0; i < years+1; i++) { 
     var tmpD = moment($scope.dates1.startDate); 
     tmpD.add(i, 'years'); 
     sc.dtColumns.push(DTColumnBuilder.newColumn(tmpD.format('YYYY')).withTitle('Total ' + tmpD.format('YYYY'))); 
    } 

什麼是做到這一點的最好方法是什麼?我相信我可以將年份解析爲整數,然後比較一下,看看有多少年了,但我覺得這不可能是正確的方式。

+0

你不需要那裏的時刻。只是獲得開始/結束年份,然後在它們之間循環:'s = 2014; e = 2016;對於(y = s,y <= e,y ++){...}'並獲得2014/2015/2016 - 不會再像以往那樣成爲整個年份都會跳過的「閏年」 –

+0

因此基本上只是將年份解析爲int,並且幾乎比較 –

+0

。無論如何,你不會做任何事情,但是無論如何都會產生年度價值,所以沒有必要立刻爲它敲響。只需要整數年。現在,如果你不得不處理部分年份或時髦的增量(「+3個月2天」)等等,那麼堅持一下。但是這種情況下更簡單肯定會更好。 –

回答

0
$scope.startDate = '01/01/2014'; 
    $scope.endDate = moment(d).format("MM/DD/YYYY"); 
    var tmpEndYear = moment(d).format("YYYY"); 
    var tmpStart = moment("20140101", "YYYYMMDD"); 
    sc.dtColumns = [DTColumnBuilder.newColumn('ProductNumber').withTitle('Item')]; 
    var tmpEnd = moment(d); 
    $scope.dates1.startDate = moment("20140101", "YYYYMMDD"); 
    $scope.dates1.endDate = tmpEnd; 
    for (var i = 2014; i <= tmpEndYear; i++) { 
     sc.dtColumns.push(DTColumnBuilder.newColumn(i).withTitle('Total ' + i)); 
    } 
    while (tmpEnd > tmpStart) { 
     sc.months.push(tmpStart.format('MM-YYYY')); 
     tmpStart.add(1, 'month'); 
    } 

最終是否解析出int並從那裏使用它。