Visa datum och tid Hur man gör det rätt
Vi stöter på dem datum och tid ... ja, varje dag. När det gäller webben kan du fånga dem i dina mobilappar, i e-postmeddelanden, i dina meddelandeprogram och på många andra platser. Ändå trots att vi ses dag och tid varje dag och överallt, vi har ännu inte anta ett universellt format för det.
Till exempel, om jag skriver 10/05/2015, kan du aldrig vara säker på om den "10" är månaden eller datumet om jag inte säger var jag kommer ifrån. Ibland ändras formatet, andra gånger språket.
Det är viktigt att vi som webbutvecklare tar uppmärksamheten på det datum och den tid vi hanterar i våra projekt, så att vi kan tillgodose dem till olika geografiska invånare utan konflikter. I det här inlägget diskuterar vi vad man ska undvika och vad man ska omfamna när det gäller att visa datortid.
globalisering
Låt oss säga att vi inte vill konvertera och visa olika datum- och tidsformat till olika tittare över hela världen, vad kan vi göra? Vi väljer ett globalt format och håller fast vid det. Här är några standarder som kommer till spel. Innan vi får det måste jag råda att W3C rekommenderar att vi använder ISO 8601-datumformatet med UTC timezone.
ISO 8601
ISO 8601 beskriver ett internationellt accepterat sätt att representera datum och tider med siffror.
Och formatet för fullständigt datum är; ÅÅÅÅ-MM-DD
, till exempel: 2015/07/28
ÅÅÅÅ = 4-siffrigt år
MM = 2-siffrig månad (01 = januari, etc.)
DD = 2 siffrig dag (01 till 31)
För fullständig datum-tid;ÅÅÅÅ-MM-DDThh: mm: ss.s
, till exempel: 2015-07-28T21: 15: 18,45
T = Att skilja datum och tid enligt ISO 8601
mm = 2 siffra minut (00 till 59)
ss = 2 siffra sekund (00 till 59)
s = Decimala fraktion av en sekund, 1 eller flera siffror
Observera att eftersom ingen tidszon har nämnts i ovanstående exempel så antas att tiden är i den lokala tidszonen. Om du har bestämt dig för att använda UTC tidszon, lägg bara till Z till värdet för att ange UTC
Till exempel: 2015-07-28T21: 15: 18.45Z
Men om du vill visa lokal tid kan du lägga till en tidszonförskjutning för UTC till värdet i formatet +hh: mm
eller -hh: mm
efter behov.
Till exempel: Låt oss anta 2015-07-28T21: 15: 18,45
är i tidszonen för EST (Eastern Standard Time) som ligger 5 timmar bakom UTC-tidzonen.
För att representera det med UTC-offset skriver vi 2015-07-28T21: 15: 18,45-05: 00
vilket motsvarar UTC-tiden 2015-07-29T02: 15: 18.45Z
.
Igen Z bifogas för att representera att den datum som visas i UTC-tiden.
UTC vs GMT
De båda är samma men olika. Nu har du förmodligen kommit över GMT minst en gång; medan du ställer in datatiden i din mobiltelefon eller dator. Det är den mest populära tidszonen som erkänns över hela världen eftersom den har funnits längre än UTC.
Medan vissa kan säga att de båda är desamma men inte, är UTC en efterträdare av GMT och underhålls av Internationella Telekommunikationsunionen. Det rekommenderas att referera till tid baserat på UTC och inte GMT.
Använd namnet på månaderna
ISO-standarden använde bara siffror i datumrepresentationen för att undvika språkkonflikter. Men om innehållet i din webbapplikation kommer att vara på engelska, bör du överväga att skriva ner månader på engelska snarare än i siffror.
Istället för 2015/07/28
, 28 juli, 2015
är lättare att förstå av många, och mindre förvirrande.
Lokalisering
Det finns tillfällen då vi vill vara väldigt specifika med våra tjänster och skulle vilja representera datum och tid i lokala tidzoner och språk. Det finns många bibliotek och API-er tillgängliga för webbutvecklare att använda och visa datum och tider enligt åtkomstregionen.
Du kan få webbläsarens standardposition antingen genom att tolka Accept-Language
begära rubrik eller genom navigator.language eller navigator.browserLanguage
JavaScript-objekt, men den bästa metoden är att låt användaren välja ett språk i din ansökan eftersom de tidigare vägarna inte är mycket tillförlitliga.
När du har läget, kan du formatera datumtiden enligt den, till exempel med hjälp av Internationaliserings API, Du kan formatera ett datum med toLocaleDateString
i JavaScript, till exempel, myDate.toLocaleDateString ( 'ko-KR')
kommer att returnera ett formaterat datum i det format som används i Korea av koreansktalande infödingar.
Sommartid (DST)
I vissa länder görs sommartid genom att vidarebefordra klockorna en timme på sommaren för att utnyttja det extra solstrålet som är tillgängligt. Var medveten om DST att hålla koll på de lokala tiderna i dina tjänster.
Inget tvåsiffrigt år
När du anpassar datum och tid för lokalisering, använd inte det tvåsiffriga formatet för året när som helst. Vi är redan på 21-talet. Använda år som 64
, 99
etc. kommer att vara besvärligt i framtiden. Om du redan har ett tvåsiffrigt system på plats överväga att ändra det.
Språngår och andra kalendrar
Låt oss avsluta det här inlägget med några olika saker att komma ihåg när du hanterar datum. Om du inte använder något bibliotek eller API för datum och vill hantera dem på egen hand (vilket är inte rekommenderas ändå), glöm inte att visa 29 februari i inmatningen för språngåren.
Det är också värt att notera att Gregorianska kalendern är inte den enda form av kalender som är tillgänglig och används över hela världen. Det finns få regionala kalendrar som lokalbefolkningen följer, särskilt när det gäller festligheter.
referenser
- International Telecommunications Union: Status för samordnad universell tid (UTC) studie i ITU-R
- ISO: ISO 8601 - Datum och tid format
- Wikipedia: Samordnad universell tid
- Wikipedia: Sommartid
- Wikipedia: Greenwich Mean Time
- W3C Obs: Datum och tidformat
- W3C Tips: Använd internationellt datumformat (ISO)