Дата JS: добавьте 0 перед каждым днем или месяцем
У меня есть эта дата, проанализированная из api как строка: ДД-ММ-гггг, но иногда дата ДД-м-гггг или даже д-М-гггг.
например:
4-1-2013 или 10-10-2013 или 7-4-2013
год всегда 4 цифры, но дни или месяцы иногда получают одну цифру. как я могу вручную (с JS) добавить 0 перед каждой цифрой ?
Я использую момент.js для некоторых вычислений таким образом I am удалить ' - ' с помощью
date.replace("-", "")
чтобы получить целое число (например. 4-1-2013 = 412013), поэтому я могу использовать его с момента.js, но если его одна цифра, все это запутывается.
4 ответов
вы можете нормализовать свои строки сначала следующим образом:
date = date.replace(/\b(\d{1})\b/g, '0');
который возьмет любое "слово", которое является только одной цифрой и добавит ноль.
обратите внимание, что чтобы глобально заменить все -
вы должны использовать версию regexp .replace
- версия строки, которую вы использовали, заменяет только первое вхождение, поэтому:
date = date.replace(/\b(\d{1})\b/g, '0').replace(/-/g, '');
сделает все, что вам нужно.
момент.js поддерживает форматы с тире, поэтому вам даже не нужно выполнять обработку строк.
moment('4-1-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 04012013
moment('10-10-2013', 'MM-DD-YYYY').format("MMDDYYYY"); // 10102013
если переменная date имеет строковый формат(например, из 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/
var day = new Date();
day = day.getDay();
if(day.toString().length <= 1) {
day = '0' + day;
}
вы можете использовать то же самое в течение месяца. Я не совсем уверен, нужно преобразовать в строку, но это не повредит.