Ответ 1
var date = new Date("2012-01-18T16:03");
console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );
var date = "2012-01-18T16:03";
var date = new Date(date);
console.log(date.getMinutes());
console.log(date.getMinutes().length)
Это возвращает 3.
.length
возвращает undefinded?Я пробовал это, но это не сработало:
Если strlen == 1
, то num = ('0' + num);
var date = new Date("2012-01-18T16:03");
console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );
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"
Другой короткий путь - заполнить минуты начальным нулем, используя:
String(date.getMinutes()).padStart(2, "0");
Значение: сделать строку длиной в два символа, если символ отсутствует, установить 0
в этой позиции.
Смотрите документы на str.padStart(targetLength, padString)
Я хотел бы предоставить более аккуратное решение проблемы, если я могу. Принятый ответ очень хорош. Но я бы сделал это так.
Date.prototype.getFullMinutes = function () {
if (this.getMinutes() < 10) {
return '0' + this.getMinutes();
}
return this.getMinutes();
};
Теперь, если вы хотите использовать это.
console.log(date.getFullMinutes());
Элегантная функция ES6 для форматирования даты в hh:mm:ss
:
const leadingZero = (num) => `0${num}`.slice(-2);
const formatTime = (date) =>
[date.getHours(), date.getMinutes(), date.getSeconds()]
.map(leadingZero)
.join(':');
Я предлагаю:
var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;
это один вызов функции меньше. Всегда хорошо думать о производительности. Это тоже коротко;
вы должны проверить, меньше ли оно 10... не ищет его длину, потому что это число, а не строка
Другая опция:
var dateTime = new Date();
var minutesTwoDigitsWithLeadingZero = ("0" + dateTime.getMinutes()).substr(-2);
.length
undefined, потому что getMinutes
возвращает число, а не строку. числа не имеют свойства length
. Вы могли бы сделать
var m = "" + date.getMinutes();
чтобы сделать его строкой, , затем проверить длину (вы хотите проверить length === 1
, а не 0).
Числа не имеют длины, но вы можете легко преобразовать число в строку, проверить длину и затем добавить 0, если это необходимо:
var strMonth = '' + date.getMinutes(); if (strMonth.length == 1) { strMonth = '0' + strMonth; }
Я предполагаю, что вам понадобится значение в виде строки. Вы можете использовать приведенный ниже код. Он всегда будет возвращать две минуты в виде строки.
var date = new Date(date);
var min = date.getMinutes();
if (min < 10) {
min = '0' + min;
} else {
min = min + '';
}
console.log(min);
Надеюсь, что это поможет.
Я не вижу никаких ответов ES6 здесь, поэтому я добавлю один, используя форматирование стандартного JS
// ES6 String formatting example
const time = new Date()
const tempMinutes = new Date.getMinutes()
const minutes = (tempMinutes < 10) ? `0${tempMinutes}` : tempMinutes
Я обычно использую этот кусок кода:
var start = new Date(timestamp),
startMinutes = start.getMinutes() < 10 ? '0' + start.getMinutes() : start.getMinutes();
Он очень похож на принятый ответ @ogur, но не связывает пустую строку в случае, когда 0 не требуется. Не уверен, что это лучше. Еще один способ сделать это!
$(".min").append( (date.getMinutes()<10?'0':'') + date.getMinutes() );
новый для JS, поэтому это было очень полезно большинство ppl смотрят на эту новую проблему тоже так вот как я получил его, чтобы показать в div под названием "class=" min "
надеюсь, что это поможет кому-то
Для двухзначных минут используйте: new Date().toLocaleFormat("%M")
как насчет этого? меня устраивает! :)
var d = new Date();
var minutes = d.getMinutes().toString().replace(/^(\d)$/, '0$1');
Другой вариант, чтобы получить две цифры минут или часов.
var date = new Date("2012-01-18T16:03");
var minutes = date.toTimeString().slice(3, 5);
var hours = date.toTimeString().slice(0, 2);
В ES6:
const twoDigitMinutes = date.toLocaleString('en-us', { minute: '2-digit' });
Если вы используете AngularJS в своем проекте, просто введите $ filter и используйте его как здесь:
$filter('date')(value, 'HH:mm')
Вы также можете отформатировать вывод в шаблоне, подробнее о фильтрах здесь.