JavaScript: Добавление ведущих нулей к дате
Я создал скрипт для вычисления даты, которая будет через 10 дней в формате dd/mm/yyyy:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
Мне нужно, чтобы дата отображалась сLeading zeroes для дня и месяца. Я пытался добавить следующие условия в скрипт, но не смог заставить их работать:
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
и
if (MyDate.getDate < 10)get.Date = '0' + getDate;
Если кто-то может показать, куда вставить эти условия в скрипт, я был бы очень признателен.
5 ответ(ов)
Попробуйте этот код: http://jsfiddle.net/xA5B7/
var MyDate = new Date();
var MyDateString;
MyDate.setDate(MyDate.getDate() + 20);
MyDateString = ('0' + MyDate.getDate()).slice(-2) + '/'
+ ('0' + (MyDate.getMonth() + 1)).slice(-2) + '/'
+ MyDate.getFullYear();
ИЗМЕНЕНИЕ:
Чтобы пояснить, метод .slice(-2)
возвращает последние два символа строки.
Таким образом, мы всегда можем добавить "0"
к дню или месяцу и просто запрашивать последние два символа, так как именно они нам и нужны.
Например, если MyDate.getMonth()
возвращает 9
, это будет:
("0" + "9") // Получаем "09"
Добавление .slice(-2)
даст нам последние два символа, что будет:
("0" + "9").slice(-2)
// "09"
Но если MyDate.getMonth()
возвращает 10
, это будет:
("0" + "10") // Получаем "010"
И добавление .slice(-2)
даст нам последние два символа:
("0" + "10").slice(-2)
// "10"
Вы можете определить функцию str_pad
, аналогичную str_pad
в PHP, следующим образом:
function str_pad(n) {
return String("00" + n).slice(-2);
}
Эта функция принимает число n
, преобразует его в строку, добавляя к нему префикс "00", а затем возвращает последние два символа этой строки. Это гарантирует, что результат будет всегда состоять из двух цифр, добавляя нули перед числом, если это необходимо.
Я нашел самый короткий способ сделать это:
MyDateString.replace(/(^|\D)(\d)(?!\d)/g, '$10$2');
Этот код добавляетLeading нули к всем одиноким, одиночным цифрам.
Вопрос: Как можно добавить ноль перед числом в JavaScript, чтобы гарантировать, что длина строки всегда будет равна определенному значению?
Ответ:
Вы можете создать метод для объекта Number
, который будет добавлять ноль в начало числа, если его строковое представление короче заданной длины. Вот пример такого метода:
Number.prototype.padZero = function(len) {
var s = String(this), c = '0';
len = len || 2; // по умолчанию длина равна 2
while (s.length < len) s = c + s; // добавляем нули в начале
return s;
}
Используя этот метод, вы можете форматировать дату, добавляя ведущие нули к дням и месяцам. Вот как это делается:
(function() {
var myDate = new Date(), myDateString;
myDate.setDate(myDate.getDate() + 10); // добавляем 10 дней к текущей дате
myDateString = [
myDate.getDate().padZero(), // форматируем день
(myDate.getMonth() + 1).padZero(), // форматируем месяц (месяцы начинаются с 0)
myDate.getFullYear() // получаем год
].join('/'); // объединяем компоненты в строку формата "ДД/ММ/ГГГГ"
alert(myDateString); // выводим отформатированную дату
})()
/* Значение: (String)
09/09/2010
*/
Этот код создаёт строку даты в формате "ДД/ММ/ГГГГ", добавляя нули перед числами, если это необходимо.
Ваш код создает строку с текущей датой в формате "дд/мм/гггг". Ниже представлен перевод на русский с пояснением.
var MyDate = new Date(); // Создаем новый объект даты с текущими значениями
var MyDateString = ''; // Инициализируем строку для хранения даты
MyDate.setDate(MyDate.getDate()); // Устанавливаем день, используя текущее значение дня
var tempoMonth = (MyDate.getMonth() + 1); // Получаем текущий месяц (0-11, поэтому добавляем 1)
var tempoDate = (MyDate.getDate()); // Получаем текущий день месяца
// Проверяем, если месяц или день меньше 10, добавляем ведущий ноль
if (tempoMonth < 10) tempoMonth = '0' + tempoMonth;
if (tempoDate < 10) tempoDate = '0' + tempoDate;
// Формируем строку с датой в формате "дд/мм/гггг"
MyDateString = tempoDate + '/' + tempoMonth + '/' + MyDate.getFullYear();
Таким образом, в результате выполнения этого кода MyDateString
будет содержать текущую дату в нужном формате. Если у вас есть дополнительные вопросы, не стесняйтесь задавать!
Где найти документацию по форматированию даты в JavaScript?
Получить название месяца из даты
Преобразование Unix-метки времени в формат времени в JavaScript
Форматирование даты в JavaScript в виде yyyy-mm-dd
Как вычислить количество дней между двумя датами?