Показувати дату і час Як це зробити правильно
Ми стикаємося з ними датами і часом… ну, кожен день. Що стосується Інтернету, ви можете виявити їх у своїх мобільних програмах, електронних листах, у програмах обміну повідомленнями та в багатьох інших місцях. Проте, незважаючи на побачення дати і часу щодня і скрізь, ми ще маємо прийняти універсальний формат для нього.
Наприклад, якщо я пишу 10/05/2015, ви ніколи не можете бути впевнені, що "10" є місяцем або датою, якщо я не скажу вам, звідки я перебуваю. Іноді формат змінюється, іноді мова.
Важливо, що як веб-розробники ми звертаємо увагу на дату і час, з якими ми маємо справу в наших проектах, щоб ми могли задовольнити їх різними географічними мешканцями без будь-якого конфлікту. У цьому пості ми будемо обговорювати чого уникати і чого обіймати коли йдеться про відображення дати-часу.
Глобалізація
Припустимо, ми не хочемо конвертувати та показувати різні формати дати та часу для різних глядачів у світі, що ми можемо зробити? Ми вибираємо один глобальний формат і дотримуємося його. Ось де входять деякі стандарти. Перш ніж дістатися до цього, я повинен повідомити, що W3C рекомендує використовувати формат дати ISO 8601 з часовим поясом UTC.
ISO 8601
ISO 8601 описує загальноприйнятий у світі спосіб представлення дат і часу з використанням чисел.
І формат для повної дати є; YYYY-MM-DD
, наприклад: 2015-07-28
YYYY = 4 цифри року
MM = 2-місячний місяць (01 = січень і т.д.)
DD = 2-хзначний день (01 до 31)
Для повної дати-часу;YYYY-MM-DDThh: мм: сц
, наприклад: 2015-07-28T21: 15: 18.45
T = Щоб розділити дату і час відповідно до ISO 8601
мм = 2 цифри хвилини (від 00 до 59)
ss = друга цифра (від 00 до 59)
s = Десяткові частки секунди, 1 або більше цифр
Зверніть увагу, що оскільки в наведеному вище прикладі не було згадано жодного часового поясу, слід припустити, що час знаходиться в локальному часовому поясі. Якщо ви вирішили використовувати часовий пояс UTC, просто додайте Z до значення для позначення UTC
Наприклад: 2015-07-28T21: 15: 18.45Z
Але якщо ви хочете відобразити місцевий час, то ви можете додати a Зсув часового поясу для UTC у значення у форматах +hh: мм
або -hh: мм
по мірі необхідності.
Наприклад: припустимо 2015-07-28T21: 15: 18.45
знаходиться в часовому поясі EST (східний стандартний час), який відстає на 5 годин від часового поясу UTC.
Для представлення з UTC зміщення ми записуємо 2015-07-28T21: 15: 18.45-05: 00
що еквівалентно часу UTC 2015-07-29T02: 15: 18.45Z
.
Знову Z додається, щоб відобразити дату-час у часі UTC.
UTC проти GMT
Вони обидва однакові, але різні. Ви, напевно, один раз потрапили в GMT; під час налаштування дати й часу на мобільному телефоні або комп'ютері. Це найпопулярніший часовий пояс, визнаний у всьому світі, оскільки він існує довше, ніж UTC.
Хоча деякі можуть сказати, що обидва вони однакові, але вони не є, UTC є наступником GMT і підтримується Міжнародним Союзом Телекомунікацій. Рекомендується посилатися на час на основі UTC, а не GMT.
Використовуйте ім'я місяців
Стандарт ISO використовував лише цифри у поданні дати, щоб уникнути будь-яких мовних конфліктів. Але якщо вміст веб-програми буде англійською мовою, тоді слід розглянути питання про написання місяців англійською мовою, а не цифрами.
Замість 2015-07-28
, 28 липня 2015 року
легше зрозуміти багатьом, і менш заплутаним.
Локалізація
Є моменти, коли ми хочемо бути дуже специфічними з нашими послугами і хотіли б представити дату і час у місцевих часових поясах і мовах. Існує багато бібліотек і API для веб-розробників, які використовують і відображають дату і час відповідно до регіону доступу.
Локаль налаштування браузера можна отримати за допомогою інтерпретації Accept-Language
запит заголовка або через navigator.language або navigator.browserLanguage
Об'єкт JavaScript, але найкращий спосіб - це дозволити користувачеві обрати мову в додатку оскільки перші способи не дуже надійні.
Після встановлення локалі ви можете відформатувати дату відповідно до нього, наприклад, за допомогою Інтернаціоналізація API, можна форматувати дату за допомогою toLocaleDateString
наприклад, у JavaScript, myDate.toLocaleDateString ('ko-KR')
поверне відформатовану дату у форматі, що використовується в Кореї корінними громадянами.
Перехід на літній час (DST)
У деяких країнах літній час здійснюється шляхом пересилання годинників на годину влітку для використання додаткового сонячного світла. Будьте в курсі DST, щоб не відставати від місцевих часів у ваших службах.
Немає двох-річного року
При налаштуванні дати та часу для локалізації не використовуйте двозначний формат для року в будь-якій точці. Ми вже в XXI столітті. Використання років, як 64
, 99
в майбутньому буде важким. Якщо ви вже маєте систему з двома цифрами, розглянути можливість змінити її.
Високосний рік та інші календарі
Давайте закінчимо цю посаду з різними речами, які потрібно пам'ятати під час роботи з датами. Якщо ви не використовуєте будь-яку бібліотеку або API для дат і хочете займатися ними самостійно (тобто ні рекомендується тим не менш), не забудьте показати 29 лютого на вхідних для високосних років.
Також варто відзначити, що Григоріанський календар - це не єдина форма календаря, доступна і використана по всьому світу. Є кілька регіональних календарів, які місцеві жителі слідують, особливо коли мова йде про свята.
Список літератури
- Міжнародний союз телекомунікацій: стан дослідження з координованого універсального часу (UTC) у МСЕ-R
- ISO: ISO 8601 - формат дати та часу
- Вікіпедія: Координований загальний час
- Вікіпедія: Перехід на літній час
- Вікіпедія: Середній час за Грінвічем
- Примітка: Формати дати та часу
- Поради W3C: використовуйте міжнародний формат дати (ISO)