javascript - 如何使用 moment.js 在日期差异计算的结果中添加前导零?
问题描述
moment.js 库的魅力之一是它可以完美地处理有时一年中有 366 天 ;-) 和不同长度的月份。
所以我组装了以下代码:
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.js' type='text/javascript'></script>
<script type="text/javascript">
Date.getFormattedDateDiff = function(date1, date2) {
var b = moment(date1),
a = moment(date2),
intervals = ['years','months','weeks','days','hours','minutes','seconds'],
out = [];
for(var i=0; i<intervals.length; i++){
var diff = a.diff(b, intervals[i]);
b.add(diff, intervals[i]);
out.push('<div>' + diff + ' ' + intervals[i] + '</div><br/>');
}
return out.join(' ');
};
window.onload = function calculateInterval() {
var start = moment("2013-09-04"),
end = moment();
document.getElementById('output').innerHTML
= 'Time elapsed between "' + start.toISOString().split('T')[0]
+ '" and "' + end.toISOString().split('T')[0] + '":<br/><br/>'
+ Date.getFormattedDateDiff(start, end);
}
</script>
<p><label id="output"></label></p>
可以在这里找到一个codepen ...
可能您会立即注意到我在结果中缺少前导零。我已经尝试了几种格式化工作。但不幸的是,它们似乎都不起作用。
任何关于如何在结果中获得前导零的建议,所以非常感谢 07 年而不是 7 年等。
解决方案
在您的情况下,您应该手动处理它,因为您输出原始数字。一种方法是使用方法padStart
diff.toString().padStart(2, '0')
但这在旧浏览器中不起作用,请参阅https://caniuse.com/?search=padStart以获取浏览器支持。
你可以写这样的东西
function getLeadingZeroNum(num) {
return num < 10 ? '0' + num : num;
}
getLeadingZeroNum(4) // 04;
推荐阅读
- twig - Craft/Twig 如何循环多个键/值对并从该循环中删除重复项?
- javascript - 切换时的树结构父位置css
- gwt - 如何解决包含 GWT Material Design 的编译错误
- android - 如何使用 MediaStore EXTERNAL_CONTENT_URI 获取正确的分层 uri
- mysql - AWS API REST 连接到外部 MySQL 数据库
- tensorflow - TensorFlow 中的回归分组
- java - 无法连接到 Oracle DB,出现 java.sql.SQLException 错误:Io 异常:网络适配器无法建立连接
- php - 在选择下拉列表中使用数组
- android - 我正确使用 AsyncTask 吗?
- python - 以 .mat 格式保存元组列表