JS Дата: Добавить 0 перед каждым днем или месяцем
У меня эта дата проанализирована из api как строка:
DD-MM-YYYY, но иногда дата - DD-M-YYYY или даже D-M-YYYY.
Например:
4-1-2013
или
10-10-2013
или 7-4-2013
Год всегда 4 цифры, но дни или месяцы иногда получают одну цифру. Как я могу вручную (с JS) добавить 0 перед каждой отдельной цифрой?
Я использую moment.js для некоторых вычислений, поэтому я удаляю '-' используя
date.replace("-", "")
чтобы получить целое число (например, 4-1-2013 = 412013), поэтому я могу использовать его с moment.js, но если его одна цифра, все это испортится.
Ответы
Ответ 1
Вы можете сначала нормализовать свои строки следующим образом:
date = date.replace(/\b(\d{1})\b/g, '0$1');
который примет любое "слово", которое представляет собой только одну цифру и добавит нуль.
Обратите внимание, что для глобальной замены каждой -
вы должны использовать версию regexp .replace
- используемая версия строки заменяет первое вхождение, поэтому:
date = date.replace(/\b(\d{1})\b/g, '0$1').replace(/-/g, '');
сделает все, что вам нужно.
Ответ 2
Moment.js поддерживает форматы с тире, поэтому вам даже не нужно выполнять обработку строк.
moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 04012013
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013
Ответ 3
Если переменная date находится в формате String (например, из input[type=date]
), вам необходимо разбить компонент данных на отдельные элементы.
date = date.split('-');
затем проверьте как день, так и длину месяца
day = date[0].length==1 ? "0"+date[0] : date[0];
month = date[1].length==1 ? "0"+date[1] : date[1];
затем верните их вместе в желаемый формат
date = ""+day+month+date[2];
Рабочий пример: http://jsfiddle.net/dzXPE/
Ответ 4
var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
day = '0' + day;
}
Вы можете использовать то же самое в течение месяца. Я не совсем уверен, что вам нужно преобразовать в строку, но это не повредит.