如何计算角度js中2个HTML5时间输入类型之间的差异

时间:2016-02-19 07:04:50

标签: javascript angularjs html5

这是我的标记

<input type="time" name="fromTime" id="fromTime" ng-model="newleave.fromTime" class="form-control" />
<input type="time" name="toTime" id="toTime" ng-model="newleave.toTime" class="form-control" ng-blur="calculatehours()"/>
<input type="time" name="Hours" id="Hours" ng-model="newleave.hours" class="form-control" readonly />

以下是我的角度代码

$scope.calculatehours = function(){
$scope.newleave.hours = $scope.newleave.toTime - $scope.newleave.fromTime;
console.log('hours',$scope.newleave.hours);
}

在控制台中它打印值360000但我无法在我的第三个输入类型=“时间”中绑定它。 因为我正在

Error: [ngModel:datefmt] Expected `3600000` to be a date

1 个答案:

答案 0 :(得分:0)

我不清楚这个值代表什么(秒或毫秒)以及你需要的价值。在一个地方你有360000和另一个3600000(额外的零)。

如果是毫秒,并且您需要格式为h:mm:ss的字符串,那么您可以使用如下函数:

/*  Convert milliseconds to time in hh:mm:ss format
**  @param {number} ms - milliseconds to convert
**  @returns {string} time in hh:mm:ss format
*/
var msToTime = (function() {
  function pad(n){return (n < 10? '0':'') + n}
  return function(ms) {
    return pad(ms/3600000 | 0) + ':' +
           pad((ms%3600000)/60000 | 0) + ':' +
           pad((ms%60000)/1000 | 0);
  }
}());

alert(msToTime(3600000));

如果是秒,则从除数中删除3个零。如果您不想在小时值上使用前导零,请不要在其上使用 pad