Pri*_*ish 18 javascript date-format date-formatting angularjs
我有一个要求,我希望将毫秒转换为AngularJS中的xHours和yMins.
对于前者 3600000应显示为1h 0m.
我尝试使用date:'H:m',并date:'HH:mm'从日期格式对角的网站.
但那些给出19:0和19:00而不是1h 0m.
任何实现这一目标的指示都会有所帮助.
谢谢
hao*_*ang 31
让我们为此制作一个自定义过滤器,例如:
.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;
};
});
Run Code Online (Sandbox Code Playgroud)
然后使用它:
<div>{{ millSeconds | millSecondsToTimeString }}</div>
Run Code Online (Sandbox Code Playgroud)
Dmi*_*zin 11
AngularJS中有日期转换器,只需设置所需的日期格式:
{{milliseconds | date:'yyyy-MM-dd HH:mm'}}
Run Code Online (Sandbox Code Playgroud)
我还使用jQuery timeago()函数创建了这样的'timeAgo'过滤器:
.filter('timeAgo', function() {
return function(input) {
if (input == null) return "";
return jQuery.timeago(input);
};
})
Run Code Online (Sandbox Code Playgroud)
用法:
{{milliseconds | timeAgo}}
Run Code Online (Sandbox Code Playgroud)
或同时使用两种格式进行广泛的日期表示:
<span>{{milliseconds | timeAgo}}, {{milliseconds | date:'yyyy-MM-dd HH:mm'}}</span>
Run Code Online (Sandbox Code Playgroud)
结果:
12 minutes ago, 2015-03-04 11:38
Run Code Online (Sandbox Code Playgroud)
cod*_*sky 10
你会想要使用时刻的持续时间对象.
要做你想做的,试试这个:
app.controller 'MainCtrl', ($scope) ->
$scope.name = 'World'
$scope.milliseconds = 3600000
$scope.duration = moment.duration($scope.milliseconds)
Run Code Online (Sandbox Code Playgroud)
和标记
<body ng-controller="MainCtrl">
<p>Milliseconds: {{milliseconds}}</p>
<p>Duration: {{duration.hours()}}h {{duration.minutes()}}m</p>
</body>
Run Code Online (Sandbox Code Playgroud)
plunkr:http://plnkr.co/edit/2HL75Tmr4CoAy5R9smkx
谢谢。我稍微修改了您的过滤器,以 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;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29100 次 |
| 最近记录: |