Текущие дата и время в javascript
Многие приложения, которые вы создаете, будут иметь какой-то компонент даты, будь то дата создания ресурса или временная метка действия. Работа с форматированием даты и метки времени может быть утомительной. В этой статье вы узнаете, как получить текущую дату в различных форматах в JavaScript.
Объект даты JavaScript
JavaScript имеет встроенный объект Date, который хранит дату и время и предоставляет методы для их обработки. Чтобы создать новый экземпляр объекта Date, используйте ключевое слово new:
const date = new Date();
//Объект Date содержит число, представляющее миллисекунды, прошедшие с эпохи, то //есть 1 января 1970 года.
//Вы можете передать строку даты конструктору даты, чтобы создать объект для //указанной даты:
const date = new Date('Jul 12 2011');
Чтобы получить текущий год, используйте метод экземпляра getFullYear() объекта Date. Метод getFullYear() возвращает год указанной даты в конструкторе Date:
const currentYear = date.getFullYear();
console.log(currentYear); //2020
//Точно так же существуют методы получения текущего дня месяца и текущего месяца:
const today = date.getDate();
const currentMonth = date.getMonth() + 1;
Метод getDate() возвращает текущий день месяца (1-31).
Метод 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.
//Метод toDateString() возвращает дату в удобочитаемом формате:
today.toDateString(); // "Sun Jun 14 2020"
//Метод toISOString() возвращает дату, которая следует расширенному формату ISO 8601:
today.toISOString(); // "2020-06-13T18:30:00.000Z"
//Метод toUTCString() возвращает дату в формате часового пояса UTC:
today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"
//Метод 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, для обработки дат в вашем приложении.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.