Недавно я показал вам, как форматировать даты в JavaScript, но мы делали это вручную, извлекая год, месяц, день и так далее и соединяя их.
Сегодня я покажу вам правильный способ сделать это, соблюдая локализацию. Таким образом, вы можете форматировать даты для разных мест и стран. Для этого мы будем использовать DateTimeFormat.
Формат даты
Дата, которую мы собираемся форматировать, должна быть экземпляром Date. Если это текущая дата, вы можете создать ее с помощью:
const date = new Date();
Code language: JavaScript (javascript)
И если у вас есть дата в строке (которая может быть получена из базы данных, бэкенда и так далее), вы можете создать новую дату, передав ей эту строку. Например:
const date = new Date(date_as_string);
Code language: JavaScript (javascript)
Я обычно храню даты в формате YYYYY-MM-DDTHH:MM:SS, например, 2021-04-27T11:17:00.
Создание форматера
Давайте создадим экземпляр Intl.DateTimeFormat, чтобы мы могли отформатировать нашу дату. Конструктор принимает в качестве первого аргумента параметр locale. Он является страной или местом, для которого вы хотите выполнить форматирование.
В примере я собираюсь создать форматтер для русского языка, поэтому local будет ru-RU.
const formater = new Intl.DateTimeFormat('ru-RU', { dateStyle: 'medium', timeStyle: 'medium' });
Code language: JavaScript (javascript)
Для второго аргумента у нас есть несколько опций, где мы можем указать, среди прочего, стиль даты и времени. Здесь мы можем управлять длиной даты.
Форматирование даты
Теперь, когда у нас есть форматер и дата в JavaScript, пришло время объединить их. Для этого полный код выглядит следующим образом:
const formater = new Intl.DateTimeFormat('ru-RU', { dateStyle: 'medium', timeStyle: 'medium' });
const fecha = new Date();
const formateddate = formater.format(fecha);
console.log("Отформатированная дата:\n" + formateddate);
Code language: JavaScript (javascript)
Все, что нам нужно сделать, это вызвать метод под названием format, который вернет строку с отформатированными датой и временем. Выходные данные для этого случая: 6 мая 2021 15:30:51.
Как видите, форматирование правильное и понятное. Если мы установим dateStyle и timeStyle на full, то получим что-то вроде этого: Monday, April 5, 2021 at 16:26:09 Central Daylight Time.