
Многие программы, которые вы создаете, будут иметь определенный компонент даты, будь то дата создания ресурса или метка времени действия.
Работа с форматированием даты и времени может быть изнурительной. В этом руководстве вы узнаете, как получить текущую дату в различных форматах JavaScript.
Объект Date в JavaScript
JavaScript имеет встроенный Date
объект, сохраняющий дату и время и предоставляющий методы для их обработки.
Чтобы создать новый экземпляр файла Date
объект, используйте new
ключевое слово:
const date = new Date();
The Date
объект содержит a Number
что представляет миллисекунды, прошедшие из Эпохи, то есть 1 января 1970 года.
Вы можете передать строку дать в Date
конструктор для создания объекта на указанную дату:
const date = new Date('Jul 12 2011');
Чтобы получить текущий год, воспользуйтесь getFullYear()
экземпляр метода Date
объект. The getFullYear()
метод возвращает год указанной даты в Date
конструктор:
const currentYear = date.getFullYear();
console.log(currentYear); //2020
Аналогично, есть методы получения текущего дня месяца и текущего месяца:
const today = date.getDate();
const currentMonth = date.getMonth() + 1;
The getDate()
способ возвращает текущий день месяца (1-31).
The getMonth()
способ возвращает месяц указанной даты. Следует отметить один момент относительно getMonth()
Метод заключается в том, что он возвращает значения, проиндексированные 0 (0-11), где 0 – январь, а 11 – декабрь. Следовательно, сложение 1 для нормализации значения месяца.
Дата сейчас
now()
является статическим методом Date
объект. Он возвращает значение в миллисекундах, которое представляет время, прошедшее после эпохи. Вы можете передать миллисекунды, возвращенные из now()
метод в Date
конструктор для создания экземпляра нового Date
объект:
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
Форматирование даты
Вы можете отформатировать дату в нескольких форматах (GMT, ISO и т.д.) с помощью методов Date
объект.
The toDateString()
метод возвращает дату в понятном для человека формате:
today.toDateString(); // "Sun Jun 14 2020"
The toISOString()
метод возвращает дату, соответствующую расширенному формату ISO 8601:
today.toISOString(); // "2020-06-13T18:30:00.000Z"
The toUTCString()
метод возвращает дату в формате часового пояса UTC:
today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"
The toLocaleDateString()
метод возвращает дату в формате, чувствительном к местности:
today.toLocaleDateString(); // "6/14/2020"
Вы можете найти полную ссылку для Date
методы в документации MDN
Специальная функция форматирования даты
Кроме форматов, упомянутых в приведенном выше разделе, ваше приложение может иметь другой формат данных. Это может быть в yy/dd/mm
или yyyy-dd-mm
формат или нечто подобное.
Чтобы решить эту проблему, было бы лучше создать функцию многоразового использования, чтобы ее можно было использовать в нескольких проектах.
Так что в этом разделе давайте создадим вспомогательную функцию, которая будет возвращать дату в формате, указанном в аргументе функции:
const today = new Date();
function formatDate(date, format) {
//
}
formatDate(today, 'mm/dd/yy');
Вам нужно заменить строки «mm», «dd», «yy» соответствующими значениями месяца, дня и года из строки формата, переданного в аргументе.
Для этого можно воспользоваться replace()
метод, как показано ниже:
format.replace('mm', date.getMonth() + 1);
Но это приведет к большому количеству цепочек методов и усложнит поддержку, поскольку вы пытаетесь сделать функцию более гибкой.
format.replace('mm', date.getMonth() + 1)
.replace('yy', date.getFullYear())
.replace('dd', date.getDate());
Вместо методов цепочки вы можете использовать регулярные выражения из replace()
метод.
Сначала создайте объект, представляющий пару ключ-значения подстроки и его соответствующее значение:
const formatMap = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
};
Далее используйте регулярное выражение, чтобы сопоставить и заменить строки:
formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);
Полная функция выглядит так:
function formatDate(date, format) {
const map = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
}
return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched])
}
Вы также можете добавить возможность форматировать метки времени в функции.
Вывод
Надеюсь, теперь вы лучше понимаете Date
объект в JavaScript. Вы также можете использовать другие посторонние библиотеки, например datesj
и moment
для обработки дат в вашей заявке.
До следующего раза будьте в безопасности и продолжайте суетиться.