【发布时间】:2010-07-22 22:03:21
【问题描述】:
寻找一种创造性的方法来确保来自 javascript Date 对象的 getHours、getMinutes 和 getSeconds() 方法的值返回 "06" 而不是 6(例如)。有什么我不知道的参数吗?显然,我可以编写一个函数来检查长度并在需要时在前面加上 "0",但我认为可能有比这更精简的方法。
谢谢。
【问题讨论】:
标签: javascript date
寻找一种创造性的方法来确保来自 javascript Date 对象的 getHours、getMinutes 和 getSeconds() 方法的值返回 "06" 而不是 6(例如)。有什么我不知道的参数吗?显然,我可以编写一个函数来检查长度并在需要时在前面加上 "0",但我认为可能有比这更精简的方法。
谢谢。
【问题讨论】:
标签: javascript date
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');
输出:
02
10
【讨论】:
已添加padStart 以用另一个字符串填充字符串的开头,其中第一个值是它应该是的长度,第二个值是填充它的内容。
例如:
let d = new Date()
let h = `${d.getHours()}`.padStart(2, '0')
let m = `${d.getMinutes()}`.padStart(2, '0')
let s = `${d.getSeconds()}`.padStart(2, '0')
let displayDate = h + ":" + m + ":" + s
// Possible Output: 09:01:34
据我所知,没有。我一直这样做是为了将日期转换为 XML dateTime 格式。
还需要注意的是,您列出的那些方法返回的是数字,而不是字符串。
当然,您可以通过修改Date.prototype 自己添加这些。
Date.prototype.getHoursTwoDigits = function()
{
var retval = this.getHours();
if (retval < 10)
{
return ("0" + retval.toString());
}
else
{
return retval.toString();
}
}
var date = new Date();
date.getHoursTwoDigits();
【讨论】:
类似于@jdmichal 的解决方案,发布是因为我希望更短一些:
function pad(n) { return ("0" + n).slice(-2); }
pad(6); // -> "06"
pad(12); // -> "12"
您可以将此方法添加到Number.prototype,而不是将单个方法添加到Date.prototype:
Number.prototype.pad = function (len) {
return (new Array(len+1).join("0") + this).slice(-len);
}
// Now .pad() is callable on any number, including those returned by
var time = date.getHours().pad(2) + ":"
+ date.getMinutes().pad(2) + ":"
+ date.getSeconds().pad(2);
【讨论】: