Подтвердить что ты не робот

Javascript Date: Убедитесь, что getMinutes(), getHours(), getSeconds() ставит 0 впереди, если необходимо

Ищете креативный способ убедиться, что значения, полученные методом getHours, getMinutes и getSeconds() для объекта Date javascript возвращают "06" вместо 6 (например). Есть ли какие-то параметры, о которых я не знаю? Очевидно, я мог бы написать функцию, которая делает это, проверяя длину и добавляя "0", если это необходимо, но я думал, что может быть что-то более упорядоченное, чем это.

Спасибо.

4b9b3361

Ответ 1

Насколько я знаю, нет. И я делаю это все время для преобразования дат в формат даты XML.

Также важно отметить, что перечисленные вами методы возвращают число, а не строку.

Вы можете, конечно, добавить их самостоятельно, изменив 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();

Ответ 2

Подобно решению @jdmichal, отправляя сообщение, потому что я предпочел бы что-то немного короче:

function pad(n) { return ("0" + n).slice(-2); }

pad(6); // -> "06"
pad(12); // -> "12"

Вместо добавления отдельных методов к Date.prototype вы можете просто добавить этот метод к Number.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);

Ответ 3

function pad2(number) {

     return (number < 10 ? '0' : '') + number

}

document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');

ВЫВОД:

02

10