我目前正在使用 moment.js 来处理 node.js 应用程序中的时间显示 - 有没有办法让我始终使用前导零格式化日期,并且至少两个字符宽?
所以9天1小时12分23秒
09:01:12:23
或1分钟
00:00:01:00
感谢任何可以提供帮助的人
我正在计算数据库中两件事之间的时间,然后将其以秒为单位发送到 moment.js。
duration.html(difference.add(1, "seconds").format("d:hh:mm:ss"));
本质上我想强制执行,即使天数为 0,也会显示它们,以及单位数字的前导零。
您可以使用时刻-持续时间格式插件:
trim
选项显示没有值的单位。正如文档所说:
前导标记在没有价值时会被自动修剪。要停止该行为,请设置
。{ trim: false }
这是一个工作示例:
var d1 = moment.duration({
seconds: 23,
minutes: 12,
hours: 1,
days: 9
});
var d2 = moment.duration({
minutes: 1
});
console.log(d1.format('DD:HH:mm:ss'));
console.log(d2.format('DD:HH:mm:ss', { trim: false }));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.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>
尝试
moment(your_date, "your_date_format").format("DD:HH:mm:ss");
在格式中使用两次格式字母而不是一次。
例如
moment(new Date()).format("DD MMM YY")
将给出前导零,但是
moment(new Date()).format("D MMM YY")
不会
使用这个:
function addZeros(d,h,m,s){
return ("0"+d).substr(-2) + ":" +("0"+h).substr(-2) + ":"+("0"+m).substr(-2) + ":" +("0"+s).substr(-2);
}