getMinutes() 0-9 - Как отобразить двузначные числа?

var date = "2012-01-18T16:03";
var date = new Date(date);

console.log(date.getMinutes());
console.log(date.getMinutes().length)

Это возвращает 3.

  • Как мне вернуть значение '03'?
  • Почему .length возвращает undefinded?

Я пробовал это, но это не сработало:

Если strlen == 1, то num = ('0' + num);

Ответ 1

var date = new Date("2012-01-18T16:03");

console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );

Ответ 2

Yikes эти ответы невелики, даже верхний пост взломан. Здесь y'go, кросс-браузер и более чистое преобразование int/string. Кроме того, мой совет не использует имя переменной "date" с кодом типа date = Date(...), в котором вы сильно полагаетесь на чувствительность к регистру (он работает, но рискован, когда вы работаете с кодом сервера/браузера на разных языках, разные правила). Итак, предположим, что дата javascript в var current_date:

mins = ('0'+current_date.getMinutes()).slice(-2);

В этом методе принимают самые правые 2 символа (slice(-2)) из "0", добавленные к строковому значению getMinutes(). Итак:

"0"+"12" -> "012".slice(-2) -> "12"

и

"0"+"1" -> "01".slice(-2) -> "01"

Ответ 3

Другой короткий путь - заполнить минуты начальным нулем, используя:

String(date.getMinutes()).padStart(2, "0");

Значение: сделать строку длиной в два символа, если символ отсутствует, установить 0 в этой позиции.

Смотрите документы на str.padStart(targetLength, padString)

Ответ 4

Я хотел бы предоставить более аккуратное решение проблемы, если я могу. Принятый ответ очень хорош. Но я бы сделал это так.

Date.prototype.getFullMinutes = function () {
   if (this.getMinutes() < 10) {
       return '0' + this.getMinutes();
   }
   return this.getMinutes();
};

Теперь, если вы хотите использовать это.

console.log(date.getFullMinutes());

Ответ 5

Элегантная функция ES6 для форматирования даты в hh:mm:ss:

const leadingZero = (num) => `0${num}`.slice(-2);

const formatTime = (date) =>
  [date.getHours(), date.getMinutes(), date.getSeconds()]
  .map(leadingZero)
  .join(':');

Ответ 6

Я предлагаю:

var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;

это один вызов функции меньше. Всегда хорошо думать о производительности. Это тоже коротко;

Ответ 7

вы должны проверить, меньше ли оно 10... не ищет его длину, потому что это число, а не строка

Ответ 8

Другая опция:

var dateTime = new Date();
var minutesTwoDigitsWithLeadingZero = ("0" + dateTime.getMinutes()).substr(-2);

Ответ 9

.length undefined, потому что getMinutes возвращает число, а не строку. числа не имеют свойства length. Вы могли бы сделать

var m = "" + date.getMinutes();

чтобы сделать его строкой, , затем проверить длину (вы хотите проверить length === 1, а не 0).

Ответ 10

Числа не имеют длины, но вы можете легко преобразовать число в строку, проверить длину и затем добавить 0, если это необходимо:

var strMonth = '' + date.getMinutes();
if (strMonth.length == 1) {
  strMonth = '0' + strMonth;
}

Ответ 11

Я предполагаю, что вам понадобится значение в виде строки. Вы можете использовать приведенный ниже код. Он всегда будет возвращать две минуты в виде строки.

var date = new Date(date);
var min = date.getMinutes();

if (min < 10) {
min = '0' + min;
} else {
min = min + '';
}

console.log(min);

Надеюсь, что это поможет.

Ответ 12

Я не вижу никаких ответов ES6 здесь, поэтому я добавлю один, используя форматирование стандартного JS

// ES6 String formatting example
const time = new Date()
const tempMinutes = new Date.getMinutes()
const minutes = (tempMinutes < 10) ? `0${tempMinutes}` : tempMinutes

Ответ 13

Я обычно использую этот кусок кода:

var start = new Date(timestamp),
    startMinutes = start.getMinutes() < 10 ? '0' + start.getMinutes() : start.getMinutes();

Он очень похож на принятый ответ @ogur, но не связывает пустую строку в случае, когда 0 не требуется. Не уверен, что это лучше. Еще один способ сделать это!

Ответ 14

$(".min").append( (date.getMinutes()<10?'0':'') + date.getMinutes() );

новый для JS, поэтому это было очень полезно большинство ppl смотрят на эту новую проблему тоже так вот как я получил его, чтобы показать в div под названием "class=" min "

надеюсь, что это поможет кому-то

Ответ 15

Для двухзначных минут используйте: new Date().toLocaleFormat("%M")

Ответ 16

как насчет этого? меня устраивает! :)

var d = new Date();
var minutes = d.getMinutes().toString().replace(/^(\d)$/, '0$1');

Ответ 17

Другой вариант, чтобы получить две цифры минут или часов.

var date = new Date("2012-01-18T16:03");

var minutes = date.toTimeString().slice(3, 5); 
var hours   = date.toTimeString().slice(0, 2); 

Ответ 18

В ES6:

const twoDigitMinutes = date.toLocaleString('en-us', { minute: '2-digit' });

Ответ 19

Если вы используете AngularJS в своем проекте, просто введите $ filter и используйте его как здесь:

$filter('date')(value, 'HH:mm')

Вы также можете отформатировать вывод в шаблоне, подробнее о фильтрах здесь.