我与价值以分钟为十进制值,需要在转换时间和现在的格式为: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秒
我与价值以分钟为十进制值,需要在转换时间和现在的格式为: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秒
加$更换过滤器的范围,我担心你不能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的创建者。
没有内置AngularJS DAT电子/时间过滤器,可以完成您想要显示的内容。
然而,您可以创建一个custom AngularJS filter,它将实现您正在寻找的东西。
% 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));
试试下面还需要在控制器
$scope.myTime = $filter('date')(new Date(1970, 0, 1).setMinutes(3361), 'HH:mm:ss');
您可以使用MomentJS为此:https://momentjs.com/docs/#/durations/ –
您的正常日期不会工作,因为OP要小时> 24. – mehulmpt
是的,这是我需要的问题一个暗示使用时间> 24 –