Отображение даты и времени Как сделать это правильно
Мы встречаем их даты и время ... ну, каждый день. Когда дело доходит до Интернета, вы можете обнаружить их в своих мобильных приложениях, в электронных письмах, в ваших приложениях обмена сообщениями и во многих других местах. Тем не менее, несмотря на то, что видишь дату и время каждый день и везде, нам еще предстоит принять универсальный формат для него.
Например, если я напишу 10/05/2015, вы никогда не сможете быть уверены, что это «10» - это месяц или дата, если я не скажу вам, откуда я. Иногда формат меняется, иногда язык.
Важно, чтобы, как веб-разработчики, мы обращали внимание на дату и время, с которыми мы имеем дело в наших проектах, чтобы мы могли обслуживать их разных географических жителей без каких-либо конфликтов. В этом посте мы будем обсуждать чего избегать и что обнимать когда дело доходит до отображения даты и времени.
глобализация
Допустим, мы не хотим конвертировать и показывать разные форматы даты и времени для разных зрителей по всему миру, что мы можем сделать? Мы выбираем один глобальный формат и придерживаемся его. Вот где некоторые стандарты вступают в игру. Прежде чем мы перейдем к этому, я должен сообщить, что W3C рекомендует использовать формат даты ISO 8601 с часовым поясом UTC..
ISO 8601
ISO 8601 описывает международно-признанный способ представления даты и времени с помощью чисел.
И формат для полной даты есть; YYYY-MM-DD
, например: 2015-07-28
ГГГГ = 4 цифры года
MM = двузначный месяц (01 = январь и т. Д.)
DD = двухзначный день (от 01 до 31)
Для полной даты-времени;YYYY-MM-DDThh: мм: сс.с
, например: 2015-07-28T21: 15: 18,45
T = разделять дату и время в соответствии с ISO 8601
мм = двузначная минута (от 00 до 59)
сс = 2 цифры секунды (от 00 до 59)
s = десятичная дробь секунды, 1 или более цифр
Обратите внимание, что, поскольку в приведенном выше примере часовой пояс не указан, предполагается, что время соответствует местному часовому поясу. Если вы решили использовать часовой пояс UTC, просто добавьте Z к значению для обозначения UTC
Например: 2015-07-28T21: 15: 18.45Z
Но если вы хотите отобразить местное время, то вы можете добавить смещение часового пояса для UTC к значению в форматах +чч: мм
или же -чч: мм
по мере необходимости.
Например: допустим 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, а не по Гринвичу.
Используйте название месяцев
Стандарт ISO использовал только числа в представлении даты, чтобы избежать любых языковых конфликтов. Но если содержимое вашего веб-приложения будет на английском языке, вы должны записать месяцы на английском языке, а не в цифрах.
Вместо 2015-07-28
, 28 июля 2015 г.
это легче понять многим и менее запутанно.
локализация
Есть моменты, когда мы хотим быть очень конкретными с нашими услугами и хотели бы представлять дату и время в местных часовых поясах и на разных языках. Веб-разработчикам доступно множество библиотек и API для использования и отображения даты и времени в зависимости от региона доступа..
Вы можете получить локаль браузера по умолчанию, либо интерпретировав Accept-Language
заголовок запроса или через navigator.language или navigator.browserLanguage
JavaScript объект, но лучший способ заключается в позволить пользователю выбрать локаль в вашем приложении так как первые способы не очень надежны.
Если у вас есть локаль, вы можете отформатировать дату в соответствии с ней, например, используя Интернационализация API, Вы можете отформатировать дату, используя toLocaleDateString
в JavaScript, например, myDate.toLocaleDateString ( 'КО-KR')
вернет отформатированную дату в формате, используемом в Корее корейскоязычными аборигенами.
Летнее время (DST)
В некоторых странах переход на летнее время осуществляется путем перевода часов на час летом, чтобы использовать дополнительный доступный солнечный свет. Помните о DST, чтобы не отставать от местного времени в ваших службах.
Нет двухзначного года
При настройке даты и времени для локализации ни в коем случае не используйте двузначный формат года. Мы уже в 21 веке. Используя годы, как 64
, 99
и т.д. будет хлопотно в будущем. Если у вас уже есть годовая система из двух цифр, рассмотрите возможность ее изменения..
Високосный год и другие календари
Давайте закончим этот пост несколькими разными вещами, которые нужно помнить при работе с датами. Если вы не используете какую-либо библиотеку или API для дат и хотели бы иметь дело с ними самостоятельно (что является не тем не менее рекомендуется), не забудьте показать 29 февраля во входных данных для високосных лет.
Также стоит отметить, что Григорианский календарь - не единственная доступная и используемая форма календаря по всему миру. Есть несколько региональных календарей, которым следуют местные жители, особенно когда речь идет о торжествах.
Рекомендации
- Международный союз электросвязи: исследование статуса всемирного координированного времени (UTC) в МСЭ-R
- ISO: ISO 8601 - формат даты и времени
- Википедия: Всемирное координированное время
- Википедия: летнее время
- Википедия: Среднее время по Гринвичу
- Примечание W3C: Форматы даты и времени
- Советы W3C: Используйте международный формат даты (ISO)