Dátum formátumok

Intended audience: XHTML/HTML kódolóknak, script fejlesztőknek(PHP, JSP, stb.), webes projektek koordinátorainak, és mindazoknak, akik tudni szeretnék a nemzetközi dátumformátumok kezelését.

Kérdés

Hogyan kell a különböző nemzetközi dátum formátumokat jól megjelenítő weblapot készíteni?

A különböző országokból érkező látogatókat megzavarhatja a dátum formátuma. A hónap/nap/év (HH/NN/ÉÉ) dátum formátum csak az Egyesült Államokra jellemző. Európában a nap/hónap/év (NN/HH/ÉÉ) a leggyakoribb, míg Magyarországon és pl. Japánban az év/hónap/nap (ÉÉ/HH/NN) a használatos. Az évet, hónapot és napot elválasztó jel lehet dőlt vonal, kötőjel vagy pont. Néhány országban 0-t írnak az egyszámjegyű hónapok és napok elé, míg máshol ezt nem használják. Hogyan értelmezze egy japán anyanyelvű látogató Németországban egy egyesült államokbeli angol weboldalon a következő dátumot: 03/04/02 ?

Válasz

Az első reakció erre a kérdésre az lehetne, hogy ezzel a problémával foglalkoznak a honlapok lokalizációja során - majd a fordító helyesen fordítja le. Azonban ez az első reakció nem megfelelő, mert ebben az esetben a dokumentumokat külön fájlban kellene tárolni, amelyek például csak az amerikai vagy angol dátum formátumban különböznek. Mindenestre amint a fenti példa is mutatja, a többnyelvűséggel mindenképpen foglalkozni kell.

Három lehetőség közül választhatunk, és mindnek van előnye és hátránya is:

  1. Az adott ország dátum formátumának használata
  2. A hónap és év egyértelmű jelölése
  3. A böngészőből jövő kérés nyelvi beállításainak, az ún. az Accept-Language HTTP fejléc használata

Első lehetőség: az adott ország dátum formátumának használata

Az ISO 8601 szabvány meghatározása szerint a dátum formátuma: év/hónap/nap (ÉÉÉÉ-HH-NN). A 2003-04-02 formátum érthetőbb, mint a 03/04/02. (Előfordul, hogy az ISO 8601 szabványt úgy módosítják, hogy a hónap rövidített nevét használják a jobb érthetőség kedvéért, mint pl. 2003-Apr-02. Ez már azonban nem az adott ország helyi formátuma.)

Előnyök:

Hátrányok:

Második lehetőség: A hónap és az év egyértelmű jelölése

Ehhez a hónap nevét (rövidítve vagy teljes névvel) és 4 számjegyű Gergely-naptár szerinti évszámokat használjuk. Például 2003. április 2.

Előnyök:

Hátrányok:

Harmadik lehetőség: A böngészőből jövő kérés nyelvi beállításainak használata; az Accept-Language HTTP fejléc

A HTTP Accept-Language fejléc csak a felhasználói nyelvet állítja be, ennek ellenére gyakran használják egyéb helyi beállításokra is.

Ez a módszer jól működik dinamikusan előállított weboldalakon, amikor a dátumot adatbázisból illesztik a dokumentumba, egészen addig amíg egyértelmű a felhasználó által elvárt dátum formátuma. A helyes dátum formátum a nyelvi kontextus függvénye, nemcsak a felhasználó böngésző beállítási kérdése. Például:

A fejlesztői környezeten múlik, hogy mi a helyes megoldás a problémára. Az alábbiakban néhány fejlesztői környezethez adunk útmutatást.

Java/JSP

Hívja meg a ServletRequest vagy a HttpServletRequest objektum getLocale módszerét. A visszakapott Locale objektumot kell használni a DateFormat meghívásához. Vegye figyelembe, hogy a SHORT formátum csak számokat használ. Ha egyértelmű formátumot szeretne akkor a FULL formátumot kell használni. Néhány helyi formátum esetén a LONG formátum is csak számból áll.

Érdemes megnézni a ICU4J oldalát is, mivel ott frissebb információk találhatók (és több funkcionalitás), mint a JDK rutinokban.

ASP

Használja a Request.ServerVariables('HTTP_ACCEPT_LANGUAGE') parancsot a felhasználói preferenciák lekérdezéséhez. Az elfogadott lokális preferenciák listájából az elsőt érdemes kiválasztani. Az alfabetikus dátum numerikussá alakításához saját kódot kell készíteni. A Session.LCID-t állítsuk a kapott értékre. A FormatDateTime kódot kell meghívni a dátum formázásához.

A vbLongDate segítségével kerülhető el a félreérthetőség.

Perl

Használja a $ENV{'HTTP_ACCEPT_LANGUAGE'} parancsot az alapértelmezett nyelv lekérdezéséhez. A POSIX:strftime segítségével állítjuk a dátum formátumát. A dátum preferált nyelvnek megfelelő formázásához saját kódot kell írni.

Összefoglalás

A dátum formátum problémájának nincsen tökéletes megoldása. Mérlegelje a lehetőségeket, majd a preferenciájának és a helyzetnek megfelelően döntsön.

Ha felmerülhet a többértelműség a dátum használata során, a legjobb választás a hónap nevének és 4 karakteres Gergely naptár szerinti évszám használata, vagy a honlapon ajánlatos feltüntetni a dátum formátum magyarázatát.

A dátumokat dinamikusan újra lehet formázni, hogy megfeleljenek az oldal nyelvi környezetének.

Mellesleg

Többen támogatják egy <date> tag bevezetését, amely a dátumokat a helyi beállításoknak megfelelően jeleníti meg. Itt ugyanazok a gyakorlati nehézségek jelentkeznek, amelyet a japán példa esetében mutattunk be. A megfelelő formátum általában inkább a honlap nyelvi környezetétől függ és nem a felhasználói környezettől.