我有一個要求,我要在毫秒中轉換成AngularJS中的xHours和yMins。AngularJS - 你如何將毫秒轉換爲xHours和yMins
例如, 3600000應顯示爲1h 0m。
我嘗試在Angular的網站上使用date formats的date:'H:m'
和date:'HH:mm'
。
但是那些給予19:0和19:00而不是1h 0m。
任何實現此目標的指針都會有所幫助。
謝謝
我有一個要求,我要在毫秒中轉換成AngularJS中的xHours和yMins。AngularJS - 你如何將毫秒轉換爲xHours和yMins
例如, 3600000應顯示爲1h 0m。
我嘗試在Angular的網站上使用date formats的date:'H:m'
和date:'HH:mm'
。
但是那些給予19:0和19:00而不是1h 0m。
任何實現此目標的指針都會有所幫助。
謝謝
您會想要使用moment's持續時間對象。
做你想做什麼,試試這個:
app.controller 'MainCtrl', ($scope) ->
$scope.name = 'World'
$scope.milliseconds = 3600000
$scope.duration = moment.duration($scope.milliseconds)
而且標記
<body ng-controller="MainCtrl">
<p>Milliseconds: {{milliseconds}}</p>
<p>Duration: {{duration.hours()}}h {{duration.minutes()}}m</p>
</body>
讓我們做一個自定義過濾器對於這一點,如:
.filter('millSecondsToTimeString', function() {
return function(millseconds) {
var oneSecond = 1000;
var oneMinute = oneSecond * 60;
var oneHour = oneMinute * 60;
var oneDay = oneHour * 24;
var seconds = Math.floor((millseconds % oneMinute)/oneSecond);
var minutes = Math.floor((millseconds % oneHour)/oneMinute);
var hours = Math.floor((millseconds % oneDay)/oneHour);
var days = Math.floor(millseconds/oneDay);
var timeString = '';
if (days !== 0) {
timeString += (days !== 1) ? (days + ' days ') : (days + ' day ');
}
if (hours !== 0) {
timeString += (hours !== 1) ? (hours + ' hours ') : (hours + ' hour ');
}
if (minutes !== 0) {
timeString += (minutes !== 1) ? (minutes + ' minutes ') : (minutes + ' minute ');
}
if (seconds !== 0 || millseconds < 1000) {
timeString += (seconds !== 1) ? (seconds + ' seconds ') : (seconds + ' second ');
}
return timeString;
};
});
然後使用它:
<div>{{ millSeconds | millSecondsToTimeString }}</div>
有一個在AngularJS日期轉換器,只需設置所需的日期格式:
{{milliseconds | date:'yyyy-MM-dd HH:mm'}}
此外,我使用jQuery TIMEAGO創建這樣的 'TIMEAGO' 濾波器()函數:
.filter('timeAgo', function() {
return function(input) {
if (input == null) return "";
return jQuery.timeago(input);
};
})
用法:
{{milliseconds | timeAgo}}
或一起使用這兩種格式的廣泛日期表示:
<span>{{milliseconds | timeAgo}}, {{milliseconds | date:'yyyy-MM-dd HH:mm'}}</span>
結果:
12 minutes ago, 2015-03-04 11:38
對於任何人誰希望有逗號分隔符(如'21天,14小時,7分鐘'):
'use strict';
angular.module('contests').filter('duration', function() {
return function(milliseconds) {
var seconds = Math.floor(milliseconds/1000);
var days = Math.floor(seconds/86400);
var hours = Math.floor((seconds % 86400)/3600);
var minutes = Math.floor(((seconds % 86400) % 3600)/60);
var dateTimeDurationString = '';
if ((days > 0) && (hours === 0 && minutes === 0)) dateTimeDurationString += (days > 1) ? (days + ' days ') : (days + ' day ');
if ((days > 0) && (hours > 0 || minutes > 0)) dateTimeDurationString += (days > 1) ? (days + ' days, ') : (days + ' day, ');
if ((hours > 0) && (minutes > 0)) dateTimeDurationString += (hours > 1) ? (hours + ' hours, ') : (hours + ' hour, ');
if ((hours > 0) && (minutes === 0)) dateTimeDurationString += (hours > 1) ? (hours + ' hours ') : (hours + ' hour ');
if (minutes > 0) dateTimeDurationString += (minutes > 1) ? (minutes + ' minutes ') : (minutes + ' minute ');
return dateTimeDurationString;
};
});
謝謝。我稍微修改了你的過濾器,以hh:mm:ss格式返回持續時間。
.filter('duration', function() {
//Returns duration from milliseconds in hh:mm:ss format.
return function(millseconds) {
var seconds = Math.floor(millseconds/1000);
var h = 3600;
var m = 60;
var hours = Math.floor(seconds/h);
var minutes = Math.floor((seconds % h)/m);
var scnds = Math.floor((seconds % m));
var timeString = '';
if(scnds < 10) scnds = "0"+scnds;
if(hours < 10) hours = "0"+hours;
if(minutes < 10) minutes = "0"+minutes;
timeString = hours +":"+ minutes +":"+scnds;
return timeString;
}
});
試試這個
var app = angular.module ('myApp', []) ;
app.controller ('myController', function ($scope, $filter) {
$scope.date = $filter('date')(milliseconds, 'MM/dd/yyyy');
});
雖然此代碼可能會回答問題,但提供有關* why *和/或* how *此代碼如何回答問題的其他上下文可提高其長期價值。 –
(function() {
'use strict';
angular
.module('module_name')
.filter('secondsToDateTime', secondsToDateTime);
function secondsToDateTime() {
return function(seconds) {
return new Date(1970, 0, 1).setSeconds(seconds);
};
}
})();
<span>{{seconds | secondsToDateTime | date:'HH:mm:ss'}}</span>
以下語法使用
$filter('date')(dateObj, format)
例如
$filter('date')(1324339200000, 'dd/MM/yyyy');
您可以編寫自定義過濾器。 '日期'不用於顯示時間間隔。 – akonsu