2014-04-10 2 views
-1

일 차이를 계산하고 싶습니다. 버튼을 클릭하면 날짜 값에 대한 두 개의 입력이 포함 된 팝업이로드됩니다. 대화 상자에서 확인을 클릭하면 페이지에 일별 차이가 생깁니다. 지금까지 내가 컨트롤러에서이,angularjs에서 대화 상자를 사용하여 날짜 차이를 찾는 방법

을 시도 :

$scope.myitems = ['01/01/2014','01/01/2014']; 

    $scope.openDlg = function() { 

     var modalInstance = $modal.open({ 
      template: '<div><input cx-Date ng-model="myitems.date1"/><input cx-Date ng-model="myitems.date2"/><button ng-click="ok()">OK</button></div>', 
      controller: ModalInstCtrl, 
      resolve: { 
       myitems: function() { 
        return $scope.myitems; 
       } 
      } 
     }); 

     modalInstance.result.then(function (myitems) { 
      $scope.myitems = myitems; 
       var dt1 = myitems.date1.split('/'), 
        dt2 = myitems.date2.split('/'), 
        one = new Date(dt1[2], dt1[1], dt1[0]), 
        two = new Date(dt2[2], dt2[1], dt2[0]); 

       var millisecondsPerDay = 1000 * 60 * 60 * 24; 
       var millisBetween = two.getTime() - one.getTime(); 
       var days = millisBetween/millisecondsPerDay; 

       $scope.diff= Math.floor(days); 

     }, function() { 
      $log.info('Modal dismissed at: ' + new Date()); 
     }); 
    }; 

    var ModalInstCtrl = function ($scope, $modalInstance, myitems) { 

     $scope.myitems = myitems; 
     $scope.ok = function() { 
      $modalInstance.close($scope.myitems);//.TotalDays; .getTime() - $scope.myitem.date1.getTime()); 
     }; 

     $scope.cancel = function() { 
      $modalInstance.dismiss('cancel'); 
     }; 

    }; 

템플릿 대화 상자를 호출 :

<div> 
     <button class="btn btn-default" ng-click="openDlg()">Calender</button> 
     <p>{{ diff}}</p> 
    </div> 
+0

사용 – aet

답변

0

당신은 당신의 기능을 조금 단순화 할 수 있어야한다. 이 SO 게시물을 참조하십시오 : 그것은 일광 절약 시간 & 시간의 실제 차이를 발견 무시로 Get difference between 2 dates in javascript?

var _MS_PER_DAY = 1000 * 60 * 60 * 24; 

var dt1 = new Date($scope.myitems.date1); 
var dt2 = new Date($scope.myitems.date2); 

dateDiffInDays(dt1, dt2); 

// a and b are javascript Date objects 
function dateDiffInDays(a, b) { 
    // Discard the time and time-zone information. 
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); 
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); 

    return Math.floor((utc2 - utc1)/_MS_PER_DAY); 
} 

이 좋은 솔루션입니다.


또 다른 옵션 : (당신의 문자열 날짜가 제대로 평가되지 않은 경우 유용는이 soooo를 쉽게 만들 것입니다, 당신은 정말 moment.js 봐야한다 new Date()

var _MS_PER_DAY = 1000 * 60 * 60 * 24; 

dateDiffInDays('01/02/2014','01/02/2013'); 

// a and b are assumed to be in the format '01/02/2014' 
function dateDiffInDays(a, b) { 
    // Discard the time and time-zone information. 
    var dt1 = Date.parse(a + ' UTC'); //appending 'UTC' within Date.parse() will return the # of MS in UTC 
    var dt2 = Date.parse(b + ' UTC'); 

    return Math.floor((dt2 - dt1)/_MS_PER_DAY); // return -365 
} 
+0

이 없습니다. 이 질문에 유래 stackoverflow.com 의해 질문 Yoshiharu 응답 날 위해 노력했다. – user3421352

+0

날짜 수정하는 방법을 알았습니다. 원래 코드에서 오류 지점을 추측하고있다. – EnigmaRM

+0

모달 컨트롤러에서 함수를 정의하는 데 문제가 있었다. – user3421352

관련 문제