JavaScript Date Now - Як отримати поточну дату в JavaScript

Багато побудованих додатків матимуть якийсь компонент дати, будь то дата створення ресурсу або позначка часу дії.

Робота з форматуванням дати та позначки часу може бути виснажливою. У цьому посібнику ви дізнаєтесь, як отримати поточну дату в різних форматах у JavaScript.

Об'єкт дати JavaScript

JavaScript має вбудований Dateоб'єкт, який зберігає дату та час та надає методи обробки.

Щоб створити новий екземпляр Dateоб’єкта, використовуйте newключове слово:

const date = new Date();

DateОб'єкт містить , Numberякий представляє мілісекунди пройшли з епохи, тобто 1 січня 1970. Наступні

Ви можете передати Dateконструктору рядок дати, щоб створити об’єкт для вказаної дати:

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для обробки дат у вашій програмі.

До наступного разу, будьте в безпеці, і продовжуйте суєту.