如何将秒数转换为?install.packages
?
目前我正在使用以下功能
HH:mm:ss
这适用于chrome但在firefox中持续12秒我得render: function (data){
return new Date(data*1000).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");;
}
我想使用moment.js来实现跨浏览器兼容性
我尝试了这个但是不起作用
01:00:12
我做错了什么?
修改
我设法找到了一个解决方案没有 moment.js,如下所示
render: function (data){
return moment(data).format('HH:mm:ss');
}
仍然很好奇我怎么能在moment.js
中做到这一点答案 0 :(得分:54)
从this post我会尝试这样做以避免跳跃问题
moment("2015-01-01").startOf('day')
.seconds(s)
.format('H:mm:ss');
我没有运行jsPerf,但我认为这比创建新的日期对象快一百万次
function pad(num) {
return ("0"+num).slice(-2);
}
function hhmmss(secs) {
var minutes = Math.floor(secs / 60);
secs = secs%60;
var hours = Math.floor(minutes/60)
minutes = minutes%60;
return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
// return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers
}
function pad(num) {
return ("0"+num).slice(-2);
}
function hhmmss(secs) {
var minutes = Math.floor(secs / 60);
secs = secs%60;
var hours = Math.floor(minutes/60)
minutes = minutes%60;
return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`;
// return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers
}
for (var i=60;i<=60*60*5;i++) {
document.write(hhmmss(i)+'<br/>');
}
/*
function show(s) {
var d = new Date();
var d1 = new Date(d.getTime()+s*1000);
var hms = hhmmss(s);
return (s+"s = "+ hms + " - "+ Math.floor((d1-d)/1000)+"\n"+d.toString().split("GMT")[0]+"\n"+d1.toString().split("GMT")[0]);
}
*/
&#13;
答案 1 :(得分:53)
这类似于另一篇文章中引用的mplungjan的答案,但更简洁:
const secs = 456;
const formatted = moment.utc(secs*1000).format('HH:mm:ss');
document.write(formatted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
它有同样的警告,例如:如果秒数超过一天(86400),你将得不到你期望的结果。
答案 2 :(得分:19)
您可以使用moment-duration-format插件:
var seconds = 3820;
var duration = moment.duration(seconds, 'seconds');
var formatted = duration.format("hh:mm:ss");
console.log(formatted); // 01:03:40
&#13;
<!-- Moment.js library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<!-- moment-duration-format plugin -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
&#13;
另见Fiddle
答案 3 :(得分:11)
var seconds = 2000 ; // or "2000"
seconds = parseInt(seconds) //because moment js dont know to handle number in string format
var format = Math.floor(moment.duration(seconds,'seconds').asHours()) + ':' + moment.duration(seconds,'seconds').minutes() + ':' + moment.duration(seconds,'seconds').seconds();
答案 4 :(得分:2)
直到24小时。
由于Duration.format
已过时,moment @ 2.23.0
const seconds = 123;
moment.utc(moment.duration(seconds,'seconds').as('milliseconds')).format('HH:mm:ss');
答案 5 :(得分:2)
更好地利用 moment.js;您可以将秒数转换为人类可读的字词,例如(几秒、2 分钟、一小时)。
以下示例应将 30 秒转换为“几秒”
moment.duration({"seconds": 30}).humanize()
其他有用的功能:“分钟”、“小时”
答案 6 :(得分:1)
如何正确使用moment.js持续时间? | 在代码中使用moment.duration()
首先,您需要导入moment
和moment-duration-format
。
import moment from 'moment';
import 'moment-duration-format';
然后,使用持续时间功能。让我们以上面的示例为例:28800 = 8 am。
moment.duration(28800, "seconds").format("h:mm a");
?好,您没有上述类型错误。您在8:00上午获得正确的值吗?不,您获得的价值是8:00。 Moment.js格式无法正常运行。
?解决方案是将秒转换为毫秒,并使用UTC时间。
moment.utc(moment.duration(value, 'seconds').asMilliseconds()).format('h:mm a')
好的,我们现在早上8:00。如果您希望整点时间是上午8点而不是8:00,我们需要进行RegExp
const time = moment.utc(moment.duration(value, 'seconds').asMilliseconds()).format('h:mm a');
time.replace(/:00/g, '')
答案 7 :(得分:1)
我将秒(数字)更改为字符串格式(例如:'mm:ss')的解决方案:
const formattedSeconds = moment().startOf('day').seconds(S).format('mm:ss');
在示例中,写您的秒而不是'S'。 只需在需要的地方使用“ formattedSeconds”即可。
答案 8 :(得分:0)
上面的例子可能对某人有用,但对我没有用,所以我想出了一个更简单的方法
var formatted = moment.utc(seconds*1000).format("mm:ss");
console.log(formatted);