Показване на дата и час Как да го направим
Срещаме ги с дати и време… Е, всеки ден. Когато става въпрос за мрежата, можете да ги откриете в мобилните си приложения, в имейли, в приложенията за съобщения и в много други места. Но въпреки датата и времето всеки ден и навсякъде, все още не сме приели универсален формат за него.
Например, ако пиша 10/05/2015, никога няма да сте сигурни дали този "10" е месецът или датата, освен ако не ви кажа откъде съм. Понякога форматът се променя, понякога езикът.
Важно е, че като уеб разработчици обръщаме внимание на датата и часа, с които се занимаваме в нашите проекти, така че можем да ги обслужва различни географски жители без никакъв конфликт. В този пост ще обсъждаме какво да избягваме и какво да прегърнем когато става въпрос за показване на дата-час.
Глобализация
Да речем, че не искаме да преобразуваме и показваме различни формати за дата и час на различни зрители по света, какво можем да направим? Избираме един глобален формат и се придържаме към него. Тук са някои стандарти. Преди да стигнем до това, трябва да ви съобщя, че W3C препоръчва да използваме формата на датата ISO 8601 с UTC часовия пояс.
ISO 8601
ISO 8601 описва международно приетия начин за представяне на датите и часовете с помощта на цифри.
Форматът за пълна дата е; ГГГГ-ММ-ДД
, например: 28.07.2015
ГГГГ = година от 4 цифри
MM = 2 цифрен месец (01 = януари и т.н.)
DD = 2 цифрен ден (01 до 31)
За пълно време;ГГГГ-ММ-ДД чч: мм: СС.С
, например: 2015-07-28T21: 15: 18.45
T = За разделяне на датата и часа съгласно ISO 8601
mm = 2 цифри минута (от 00 до 59)
ss = 2-цифрена секунда (от 00 до 59)
s = Десетична част от секунда, 1 или повече цифри
Моля, имайте предвид, че тъй като в горния пример не е споменато времева зона, трябва да се приеме, че времето е в местната часова зона. Ако сте решили да използвате UTC часовата зона, просто добавете Z към стойността, обозначаваща UTC
Например: 2015-07-28T21: 15: 18.45Z
Но ако искате да покажете местно време, можете да добавите a отместване на часовата зона за 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, а не GMT.
Използвайте името на месеците
Стандартът ISO използва само числа в представянето на датата, за да се избегнат всякакви езикови конфликти. Но ако съдържанието на уеб приложението ви ще бъде на английски, трябва да помислите да напишете месеци на английски, а не на цифри.
Вместо 28.07.2015
, 28 юли 2015 г.
е по-лесно за разбиране от мнозина и по-малко объркващо.
Локализация
Има моменти, в които искаме да бъдем много специфични с нашите услуги и бихме искали да представим датата и часа в местните часови зони и езици. Има много библиотеки и API, достъпни за уеб разработчиците, за да могат да използват и показват датите и часовете според региона на достъп.
Можете да получите подразбирания локал на браузъра или чрез интерпретиране на Accept-Language
искане заглавието или чрез navigator.language или navigator.browserLanguage
JavaScript обект, но най-добрият метод е да дайте възможност на потребителя да избере локал във вашето приложение тъй като предишните начини не са много надеждни.
След като имате локал, можете да форматирате датата според него, например с помощта на API за интернационализация, можете да форматирате датата с помощта на toLocaleDateString
например в JavaScript, myDate.toLocaleDateString ( "ко-KR)
ще върне форматирана дата във формат, използван в Корея от корейски говорещи местни жители.
Лятно часово време (DST)
В някои страни лятното часово време се извършва чрез пренасочване на часовниците с един час през лятото, за да се използва допълнителната слънчева светлина. Бъдете наясно с DST, за да следите местните времена във вашите услуги.
Без двегодишна година
При персонализирането на датата и часа за локализация не използвайте двуцифрения формат за годината във всяка точка. Вече сме в 21-ви век. Използване на години като 64
, 99
в бъдеще. Ако вече имате двуцифрена годишна система, помислете за промяна.
Високосна година и други календари
Нека завършим този пост с различни неща, които трябва да запомните, докато се занимавате с дати. Ако не използвате библиотека или API за дати и обичате да се справяте с тях сами (което е не Препоръчва се все пак), не забравяйте да покажете на 29 февруари на входа за високосните години.
Също така си струва да се отбележи, че Грегорианският календар не е единствената налична и използвана календарна форма по целия свят. Има няколко регионални календара, които местните жители следват, особено когато става въпрос за празненства.
Препратки
- Международен съюз по далекосъобщения: Състояние на координираното универсално време (UTC) в проучването на ITU-R
- ISO: ISO 8601 - формат за дата и час
- Уикипедия: Универсално координирано време
- Уикипедия: Лятно часово време
- Уикипедия: Средно време по Гринуич
- W3C Забележка: Формати за дата и час
- W3C Съвети: Използвайте международен формат на датата (ISO)