Оригінальна публікація: How to Format Dates in JavaScript with One Line of Code
Довгий час я користувався бібліотеками, як-от Date-fns
, коли мені потрібно було встановити дату в JavaScript. Але їх дивно використовувати у малих проєктах, що вимагають простих форматів дати й часу, які JavaScript пропонує за замовчуванням.
Я дізнався, що так робить багато розробників. І я думав, що це найкращий спосіб, допоки не зрозумів, що не завжди потрібно використовувати бібліотеки для форматування дат в JavaScript.
Якщо хочете спробувати, ось код:👇
new Date().toLocaleDateString('en-us', { weekday:"long", year:"numeric", month:"short", day:"numeric"})
// "Friday, Jul 2, 2021"
Ви, мабуть, спробували його та побачили, що все працює. Давайте розберемось, як працює цей код та дізнаємось про інші способи форматування дати в JavaScript за допомогою лише одного рядка коду.
Як форматувати дату й час у JS
Отримати дату й час у JavaScript не викликає проблем, але їхнє форматування може здатись важким для початківців. Через це багато людей користуються бібліотеками.
new Date()
— це найпоширеніший метод отримання дати й часу в JavaScript.
За замовчуванням, коли ви запускаєте new Date()
у своєму терміналі, використовується часовий пояс вашого браузера та дата/час показані як повний текстовий рядок, наприклад Fri Jul 02 2021 12:44:45 GMT+0100 (British Summer Time).
Але мати щось подібне на вебсторінці або в додатку — непрофесійно та важко для читання. Тому потрібно знайти кращі способи для форматування дати й часу.
Розглянемо деякі методи, які працюють для дати й часу.
Методи дати й часу в JavaScript
Існує багато методів, які можна застосувати до дати й часу. Ці методи можна використовувати, щоб отримати інформацію щодо дати й часу. Ось декілька з них:
getFullYear()
— для отримання року як чотиризначного числа (yyyy)getMonth()
— для отримання місяця як числа (0-11)getDate()
— для отримання дня як числа (1-31)getHours()
— для отримання години (0-23)
І багато інших…
На жаль, більшість цих методів однаково потребує багато коду для того формату дати й часу, який ми хочемо.
Наприклад, new Date().getMonth()
виведе 6, що означає липень. Щоб використати липень у моєму коді, мені знадобиться дуже великий код, що може бути громіздким:
const currentMonth = new Date();
const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
console.log(months[currentMonth.getMonth()]);
Давайте розглянемо два методи, які можна використовувати для форматування дати й часу у своїх проєктах.
Метод toDateString() у JavaScript
Метод toDateString()
повертає частину дати й часу у вигляді рядка, використовуючи наступний формат:
- Перші три літери дня
- Перші три літери місяця
- Дві цифри, що позначають день (за потреби з нулями зліва)
- Принаймні чотири цифри, що позначають рік (за потреби з нулями зліва)
new Date().toDateString();
//"Fri Jul 02 2021"
Одним з головних недоліків цього методу є наша нездатність маніпулювати виводом дати й часу так, як ми хочемо.
Наприклад, ми не маємо можливості показувати дату й час відповідно до нашої мови. Розглянемо ще один метод, який, на мій погляд, один із найкращих.
Метод toLocaleDateString() у JavaScript
Цей метод повертає дату й час як рядок, використовуючи локальні норми. Він також приймає параметри як аргументи, що дозволяє вам/вашим програмам налаштувати поведінку функції.
Синтаксис:
toLocaleDateString()
toLocaleDateString(locales)
toLocaleDateString(locales, options)
Розглянемо приклади та їхні виводи:
const currentDate = new Date();
const options = { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric' };
console.log(currentDate.toLocaleDateString('de-DE', options));
//Freitag, 2. Juli 2021
console.log(currentDate.toLocaleDateString('ar-EG', options))
// الجمعة، ٢ يوليو ٢٠٢١
console.log(currentDate.toLocaleDateString('en-us', options));
//Friday, Jul 2, 2021
Можна не використовувати локалі або параметри:
new Date().toLocaleDateString()
// "7/2/2021"
А ще можна використовувати лише локаль. Це виведе таку саму інформацію, що в попередньому прикладі, базуючись на часовому поясі мого браузера.
new Date().toLocaleDateString('en-US')
"7/2/2021"
Параметри можна змінювати за бажанням. Ось 4 основні параметри:
weekday
— виводить день залежно від того, як ви хочете (короткий чи довгий)year
— виводить рік як числоmonth
— виводить місяць залежно від того, як ви хочете (короткий чи довгий)day
— виводить день як число
new Date().toLocaleDateString('en-us', { weekday:"long", year:"numeric", month:"short"}) // "Jul 2021 Friday"
new Date().toLocaleDateString('en-us', { year:"numeric", month:"short"})
// "Jul 2021"
Висновок
Дату і час можна відобразити сімома різними методами. Кожен з цих методів надає певне значення:
toString()
надає Fri Jul 02 2021 14:03:54 GMT+0100 (British Summer Time)toDateString()
надає Fri Jul 02 2021toLocaleString()
надає 7/2/2021, 2:05:07 PMtoLocaleDateString()
надає 7/2/2021toGMTString()
надає Fri, 02 Jul 2021 13:06:02 GMTtoUTCString()
надає Fri, 02 Jul 2021 13:06:28 GMTtoISOString()
надає 2021-07-02T13:06:53.422Z
Якщо ви шукаєте передовіші формати дати, вам потрібно буде створити спеціальний формат самостійно.