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

26
задан eyelidlessness 22 July 2010 в 22:10
поделиться

2 ответа

Обновление: ECMAScript 2017 (ECMA-262)

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
<час>

Pre-ECMAScript 2017

Насколько я знаю, нет. И я делаю это все время для преобразования дат в формат 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();
30
ответ дан Get Off My Lawn 28 November 2019 в 06:07
поделиться

Похоже на решение @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);
54
ответ дан 28 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: