我正在使用Angular.js,我有一个表示秒数的数字字符串(例如:)610。
610
我需要一个将其转换为时间模式的过滤器:10:10(10分钟10秒= 610秒)。
10:10
我应该怎么做?
manzapanza的答案仅在秒数小于86400(1天)时有效。日期对象必须完全为零。同样,最好返回实际的date对象,以便angularjs不必再次创建它。
app.filter('secondsToDateTime', function() { return function(seconds) { var d = new Date(0,0,0,0,0,0,0); d.setSeconds(seconds); return d; }; });
和
<b>{{seconds | secondsToDateTime | date:'HH:mm:ss'}}</b>
编辑: 如果您希望小时数不超过24天而不是几天,最好不要使用Date:
app.filter('secondsToTime', function() { function padTime(t) { return t < 10 ? "0"+t : t; } return function(_seconds) { if (typeof _seconds !== "number" || _seconds < 0) return "00:00:00"; var hours = Math.floor(_seconds / 3600), minutes = Math.floor((_seconds % 3600) / 60), seconds = Math.floor(_seconds % 60); return padTime(hours) + ":" + padTime(minutes) + ":" + padTime(seconds); }; });
<b>{{seconds | secondsToTime}}</b>