Vis dato og klokkeslæt Sådan gør du det rigtigt
Vi kommer på tværs af dem datoer og tid ... godt hver dag. Når det kommer til internettet, kan du få øje på dem i dine mobilapps, i e-mails, i dine messagingapps og på mange andre steder. Men på trods af at se dato og tid hver dag og overalt, vi har endnu ikke vedtaget et universelt format til det.
For eksempel, hvis jeg skriver 10/05/2015, kan du aldrig være sikker på, om "10" er måneden eller datoen, medmindre jeg fortæller dig, hvor jeg er fra. Nogle gange ændres formatet, andre gange sproget.
Det er vigtigt, at vi som webudviklere holder øje med den dato og klokkeslæt, vi beskæftiger os med i vores projekter, så vi kan imødekomme dem til forskellige geografiske indbyggere uden nogen konflikt. I dette indlæg vil vi diskutere hvad man skal undgå og hvad man skal omfavne når det kommer til at vise datatidspunktet.
Globalisering
Lad os sige, at vi ikke ønsker at konvertere og vise forskellige dato og klokkeslæt formater til forskellige seere over hele verden, hvad kan vi gøre? Vi vælger et globalt format og holder os til det. Her er hvor nogle standarder kommer i spil. Før vi kommer til det, må jeg råde over, at W3C anbefaler, at vi bruger datoen ISO 8601 med UTC timezone.
ISO 8601
ISO 8601 beskriver en internationalt accepteret måde at repræsentere datoer og tider ved hjælp af tal.
Og formatet for den komplette dato er; ÅÅÅÅ-MM-DD
, for eksempel: 2015/07/28
ÅÅÅÅ = 4 cifret år
MM = 2 cifret måned (01 = januar osv.)
DD = 2 cifre dag (01 til 31)
For fuldstændig dato-tid;ÅÅÅÅ-MM-DDTtt: mm: ss.s
, for eksempel: 2015-07-28T21: 15: 18.45
T = At adskille dato og klokkeslæt i henhold til ISO 8601
mm = 2 cifret minut (00 til 59)
ss = 2 cifret sekund (00 til 59)
s = Decimal fraktion af et sekund, 1 eller flere cifre
Bemærk, at da ingen tidszone er nævnt i ovenstående eksempel, så det antages at tiden er i den lokale tidszone. Hvis du har valgt at bruge UTC tidszone, skal du blot tilføje Z til værdien for at angive UTC
For eksempel: 2015-07-28T21: 15: 18.45Z
Men hvis du ønsker at vise lokal tid, så kan du tilføje en tidszoneforskydning for UTC til værdien i formaterne +hh: mm
eller -hh: mm
efter behov.
For eksempel: Lad os antage 2015-07-28T21: 15: 18.45
er i tidszone for EST (Eastern Standard Time), der ligger 5 timer bag UTC tidszone.
For at repræsentere det med UTC offset skriver vi 2015-07-28T21: 15: 18,45-05: 00
hvilket svarer til UTC-tiden 2015-07-29T02: 15: 18.45Z
.
Igen Z er vedlagt at repræsentere, at den viste dato er i UTC-tid.
UTC vs GMT
De begge er ens endnu forskellige. På nuværende tidspunkt har du sandsynligvis stødt på GMT mindst en gang; mens du indstiller datatiden i din mobiltelefon eller computer. Det er den mest populære tidszone, der anerkendes verden over, da den har eksisteret længere end UTC.
Mens nogle måske siger, at de begge er de samme, men de er ikke, er UTC en efterfølger for GMT og opretholdes af International Telecommunications Union. Det anbefales at henvise til tid baseret på UTC og ikke GMT.
Brug navnet på månedene
ISO-standarden brugte kun tal i datorepræsentationen for at undgå sprogkonflikter. Men hvis indholdet af din webapplikation skal være på engelsk, bør du overveje at skrive ned måneder på engelsk snarere end i tal.
I stedet for 2015/07/28
, 28. juli 2015
er lettere at forstå af mange og mindre forvirrende.
Lokalisering
Der er tidspunkter, hvor vi vil være meget specifikke med vores tjenester og gerne repræsenterer dato og klokkeslæt i lokale tidssoner og sprog. Der er mange biblioteker og API'er til rådighed for webudviklere at gøre brug af og vise datoerne og tiderne pr. Adgangsregionen.
Du kan få browserens standardplacering enten ved at fortolke Accept-Language
forespørgselsoverskrift eller gennem navigator.language eller navigator.browserLanguage
JavaScript-objekt, men den bedste metode er at lad brugeren vælge en lokalitet i din ansøgning da de tidligere måder ikke er meget pålidelige.
Når du har lokalet, kan du formatere datatiden i henhold til den, f.eks. Ved hjælp af Internationalisering API, Du kan formatere en dato ved hjælp af toLocaleDateString
i f.eks. JavaScript, myDate.toLocaleDateString (ko-KR)
vil returnere en formateret dato i det format, der anvendes i Korea af koreansktalende indfødte.
Sommertid (DST)
I visse lande sker sommertid ved at videresende ure med en time om sommeren for at gøre brug af det ekstra sollys, der er til rådighed. Vær opmærksom på DST for at holde øje med de lokale tider i dine tjenester.
Ingen tocifret år
Når du tilpasser dato og klokkeslæt for lokalisering, skal du ikke bruge det tocifrede format for året til enhver tid. Vi er allerede i det 21. århundrede. Brug år som 64
, 99
osv. vil være besværligt i fremtiden. Hvis du allerede har et tocifret årssystem på plads, skal du overveje at ændre det.
Skovår og andre kalendere
Lad os afslutte dette indlæg med nogle forskellige ting at huske, mens vi behandler datoer. Hvis du ikke bruger noget bibliotek eller API til datoer og gerne vil håndtere dem på egen hånd (hvilket er ikke anbefales ikke desto mindre), glem ikke at vise den 29. februar i input for springårene.
Det er også værd at bemærke, at Gregoriansk kalender er ikke den eneste form for kalender tilgængelig og brugt over hele verden. Der er få regionale kalendere, som lokalbefolkningen følger, især når det kommer til festligheder.
Referencer
- International Telecommunications Union: Status for koordineret universeltid (UTC) undersøgelse i ITU-R
- ISO: ISO 8601 - Dato og klokkeslæt
- Wikipedia: Koordineret Universal Time
- Wikipedia: Sommertid
- Wikipedia: Greenwich Mean Time
- W3C Bemærk: Dato og klokkeslætformater
- W3C Tips: Brug internationalt datoformat (ISO)