2017-03-23 54 views
0

我与价值以分钟为十进制值,需要在转换时间和现在的格式为:56:01:00如何在小时制时间大于24小时AngularJS

我想这样的代码:

$scope.myTime = new Date(1970, 0, 1).setMinutes(3361); 

<input type="text" class="form-control" ng-model="myTime | date:'HH:mm:ss'"> 

但结果不是我所料:8点01分00秒

+2

您可以使用MomentJS为此:https://momentjs.com/docs/#/durations/ –

+0

您的正常日期不会工作,因为OP要小时> 24. – mehulmpt

+0

是的,这是我需要的问题一个暗示使用时间> 24 –

回答

4

加$更换过滤器的范围,我担心你不能acheive你需要使用的角度date过滤什么。

您可以创建自定义过滤器(此处为angular official guide)并以您需要的格式生成结果。

例如,您可以使用moment.duration(3361, 'minutes');创建moment duration,然后使用moment-duration-format获取HH:mm:ss格式的持续时间。

这里一个完整的活生生的例子:

angular.module('MyApp', []) 
 
.filter('durationFormat', function() { 
 
    return function(input) { 
 
    input = input || ''; 
 
    var out = ''; 
 
    var dur = moment.duration(input, 'minutes'); 
 
    return dur.format('HH:mm:ss'); 
 
    }; 
 
}) 
 
.controller('AppCtrl', function($scope) { 
 
    $scope.myTime = 3361; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script> 
 

 
<div ng-app="MyApp" ng-controller="AppCtrl"> 
 
    {{ myTime | durationFormat }} 
 
</div>


另一种方式来获得相同的输出使用angular-moment-duration-format有过滤器使用,并显示时刻的持续时间。您可以使用amdCreate指定'minutes'单位创建持续时间,然后使用amdFormat对其进行格式化。

这里的示例:

angular.module('MyApp', ['angularDurationFormat']) 
 
.controller('AppCtrl', function($scope) { 
 
    $scope.myTime = 3361; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script> 
 
<script src="https://cdn.rawgit.com/vin-car/angular-moment-duration-format/0.1.0/angular-moment-duration-format.min.js"></script> 
 

 
<div ng-app="MyApp" ng-controller="AppCtrl"> 
 
    {{ myTime | amdCreate:'minutes' | amdFormat:'HH:mm:ss' }} 
 
</div>

PS。我是angular-moment-duration-format的创建者。

1

没有内置AngularJS DAT电子/时间过滤器,可以完成您想要显示的内容。

然而,您可以创建一个custom AngularJS filter,它将实现您正在寻找的东西。

1

% 60会给你几分钟的幸免。然后你可以简单地减去60分来得到小时数。

function minutesToHours(min) { 
 
    var minutes = min % 60; 
 
    var hours = (min-minutes)/60; 
 
    minutes = minutes < 10 ? '0' + minutes : minutes; 
 
    return hours+':'+minutes+':00'; 
 
} 
 

 
console.log(minutesToHours(3361));

1

试试下面还需要在控制器

$scope.myTime = $filter('date')(new Date(1970, 0, 1).setMinutes(3361), 'HH:mm:ss');