5

Получить строку в формате YYYYMMDD из объекта даты JS?

13

Я пытаюсь использовать JavaScript, чтобы преобразовать объект date в строку в формате YYYYMMDD. Есть ли более простой способ, чем конкатенация результатов методов Date.getYear(), Date.getMonth() и Date.getDay()?

4 ответ(ов)

7

Ваш код для добавления метода yyyymmdd в прототип объекта Date выглядит хорошо, но вот несколько замечаний и улучшений, которые можно внести:

  1. Метод yyyymmdd возвращает дату в формате YYYYMMDD, что может быть полезно для форматирования даты в строку. Все работает корректно, за исключением момент, что результат не содержит разделителей.
  2. Убедитесь, что вы правильно используете метод, так как он будет доступен для всех объектов типа 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

Таким образом, используя данный метод, вы сможете легко получить строку с датой в желаемом формате. Если у вас есть дополнительные вопросы или требуется помощь с улучшением кода, не стесняйтесь спрашивать!

3

Если вам не нравится добавлять методы в прототип, вы можете воспользоваться альтернативным решением, как показано ниже:

const rightNow = new Date();
const res = rightNow.toISOString().slice(0, 10).replace(/-/g, "");

// Следующая строка предназначена только для вывода результата
document.body.innerHTML += res;

Этот код создает строку текущей даты в формате YYYYMMDD без необходимости модифицировать прототип объекта Date.

0

Вы можете использовать следующий код для форматирования даты в желаемый формат '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'.

0

Если вам не требуется чистое решение на JavaScript, вы можете использовать jQuery UI для этой задачи так:

$.datepicker.formatDate('yymmdd', new Date());

Я обычно не люблю импортировать слишком много библиотек, но jQuery UI настолько полезен, что вы, вероятно, будете использовать его и в других частях вашего проекта.

Посетите http://api.jqueryui.com/datepicker/ для получения дополнительных примеров.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь