JavaScript Date Now – Как получить текущую дату в JavaScript

Многие программы, которые вы создаете, будут иметь определенный компонент даты, будь то дата создания ресурса или метка времени действия.

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

До следующего раза будьте в безопасности и продолжайте суетиться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *