2016-02-04 20 views
-1

我想用角度js计算两个日期之间的日期差异。我用这个代码:用角度js计算两个日期之间的日期差异

$scope.formatString = function(format) { 
    var year = parseInt(format.substring(0,5)); 
    var month = parseInt(format.substring(6,8)); 
    var day = parseInt(format.substring(9,10)); 
    var date = new Date(year, month-1, day); 
    return date; 
} 

$scope.dayDiff = function(fromdate,todate){ 
    var date2 = new Date($scope.formatString(fromdate)); 
    var date1 = new Date($scope.formatString(todate)); 
    var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
    var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
    return diffDays; 
} 

但它是正确的同一个月内,但它不能做不同月份的两个日期之间的正确计算。

  • 例如DATE1 = 2016年2月12日,日期2 = 2016年2月18日(OK)
  • 例如DATE1 = 2016年2月12日,日期2 = 2016年3月1日(这是不正确的)
+0

是指在给定的DATEDIFF过滤器 - http://stackoverflow.com/questions/25635082/calculating-date-difference-with-angular-filter希望它能帮助! –

回答

0

为什么不尝试使用字符串split函数(docs)来解析日期,split将根据您输入的格式按照该顺序生成年,月和日的数组。从那里,你可以通过索引引用数组片,有点容易比试图让你的子偏移正确一字排开:

$scope.formatString = function(format) { 
    var pieces = format.split('.'), 
     year = parseInt(pieces[0]), 
     month = parseInt(pieces[1]), 
     day = parseInt(pieces[2]), 
     date = new Date(year, month - 1, day); 

    return date; 
} 

看看这个工作例如:http://plnkr.co/edit/GgXjqA76IX5bzQEP56ux?p=preview

+0

谢谢你的帮助。这对我来说没问题。 –

0

这是更好地使用一个现成的图书馆。因为你不知道将来你仍然需要处理日期。我建议sugarjs

日期之间的差异可以通过以下方式找到。

Date.range('2012.01.01', '2013.01.01').every('days').length 
相关问题