Получить строку в формате YYYYMMDD из объекта даты JS?
Я пытаюсь использовать JavaScript, чтобы преобразовать объект date
в строку в формате YYYYMMDD
. Есть ли более простой способ, чем конкатенация результатов методов Date.getYear()
, Date.getMonth()
и Date.getDay()
?
4 ответ(ов)
Ваш код для добавления метода yyyymmdd
в прототип объекта Date
выглядит хорошо, но вот несколько замечаний и улучшений, которые можно внести:
- Метод
yyyymmdd
возвращает дату в форматеYYYYMMDD
, что может быть полезно для форматирования даты в строку. Все работает корректно, за исключением момент, что результат не содержит разделителей. - Убедитесь, что вы правильно используете метод, так как он будет доступен для всех объектов типа
Date
.
Вот ваш код с небольшими улучшениями и комментариями:
Date.prototype.yyyymmdd = function() {
var mm = this.getMonth() + 1; // getMonth() возвращает месяц от 0 до 11
var dd = this.getDate();
// Используем форматирование: добавляем ведущий ноль для месяцев и дней
return [this.getFullYear(),
(mm > 9 ? '' : '0') + mm,
(dd > 9 ? '' : '0') + dd
].join('');
};
var date = new Date();
console.log(date.yyyymmdd()); // Выводит текущую дату в формате YYYYMMDD
Таким образом, используя данный метод, вы сможете легко получить строку с датой в желаемом формате. Если у вас есть дополнительные вопросы или требуется помощь с улучшением кода, не стесняйтесь спрашивать!
Если вам не нравится добавлять методы в прототип, вы можете воспользоваться альтернативным решением, как показано ниже:
const rightNow = new Date();
const res = rightNow.toISOString().slice(0, 10).replace(/-/g, "");
// Следующая строка предназначена только для вывода результата
document.body.innerHTML += res;
Этот код создает строку текущей даты в формате YYYYMMDD
без необходимости модифицировать прототип объекта Date
.
Вы можете использовать следующий код для форматирования даты в желаемый формат 'YYYY-MM-DD':
new Date('Jun 5 2016').
toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
// => '2016-06-05'
Здесь мы создаем новый объект Date
, используя строку 'Jun 5 2016'. Затем, с помощью метода toLocaleString
, мы получаем строку даты в формате 'MM/DD/YYYY'. В конце мы используем регулярное выражение для замены этого формата на 'YYYY-MM-DD', что даёт нам искомый результат '2016-06-05'.
Если вам не требуется чистое решение на JavaScript, вы можете использовать jQuery UI для этой задачи так:
$.datepicker.formatDate('yymmdd', new Date());
Я обычно не люблю импортировать слишком много библиотек, но jQuery UI настолько полезен, что вы, вероятно, будете использовать его и в других частях вашего проекта.
Посетите http://api.jqueryui.com/datepicker/ для получения дополнительных примеров.
Как получить текущую дату в JavaScript?
Как отформатировать дату в JavaScript?
Где найти документацию по форматированию даты в JavaScript?
Как преобразовать дату в UTC?
Как вычислить количество дней между двумя датами?