Portál AbcLinuxu, 6. května 2025 06:18

Dotaz: Jak lokalizovat formát data a času

26.10.2011 21:35 herakles
Jak lokalizovat formát data a času
Přečteno: 443×
Odpovědět | Admin
Ahoj. Potřeboval bych nějak lokalizovat formát data a času pro různé lokalizace. Je to pro web psaný v php. Pro překlady používám gettext a tak mě napadlo zneužít to i pro překlad formátu data a času, třeba řetězec "Y-m-d" by se překládal pro českou lokalizaci na "d.m.Y" apod. Je to hodně velká blbost to takhle řešit? Nenapadají mě žádné zápory tohoto řešení, jen klady - obrovským kladem je, že budu mít všechnu lokalizaci v jednom souboru a nebudu muset řešit formátování data dalším souborem např. třídou s metodami getDateFormat apod.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.10.2011 21:46 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano, je to blbost. Standardní funkce strftime() (dostupná i v PHP) umí lokalizované formáty data a času, například samotné datum bez času je %x.

Za druhé je to blbost proto, že klasický ISO 8601 formát, který uvádíš, je prostě formát podle mezinárodní normy. Buď používáš ISO, nebo národní a krajové obyčeje...
26.10.2011 21:48 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Abych to upřesnil, lokalizace data a času už jsou na jednom místě, a to v systémových locales. To, co navrhuješ, je naopak duplikace této informace (a to nejspíš nekonzistentní).
26.10.2011 21:59 herakles
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Jestliže je to založené na systémových locales, tak to může být jiné v linuxu a ve windows ne?
26.10.2011 22:47 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
V principu ano (a jelikož systémová locale si v princupu může každý zeditovat, tak to může být na každém počítači jinak). Normálně bych řekl, že to tak je v pořádku, protože se program řídí tím, co je obvyklé. Nicméně u webové aplikace je opravdu otázka, s čím má být konzistentní. Pořád bych ale použil strftime(). Kdyby nastal problém s konzistencí, tak tedy označil %x coby přeložitelný řetězec, tudíž by se v případě nutnosti mohl (ale nemusel) pro konkrétní lokalizaci přeložit pevným formátem.
26.10.2011 23:41 herakles
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Myslím, že s tím implicitním formátováním podle locales může být problém. Tato data a časy totiž rovněž edituji ve formuláři, takže potřebuju, aby tomu php rozumnělo i zpětně. Dá se to nějak provést? Podle všeho třída DateTime a funkce pro tvorbu data rozumí jen několika "málo" formátům a obecně nemají problém jen s anglickou lokalizací.
26.10.2011 23:46 herakles
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Totiž jediná strptime by to mohla umět, ale: "Note: This function is not implemented on Windows platforms."
26.10.2011 23:49 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Note: This function is not implemented on Windows platforms.
Nj. Co k tomuhle říci...
Josef Kufner avatar 29.10.2011 17:37 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Že server běží na Linuxu a proto tě to netrápí?
Hello world ! Segmentation fault (core dumped)
29.10.2011 20:16 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
Spíš že mě vždy dokáže překvapit, jaké základní věci na MS Windows nefungují...
26.10.2011 23:48 l4m4
Rozbalit Rozbalit vše Re: Jak lokalizovat formát data a času
strptime() by obecně měl rozparsovat výstup strftime() se stejným formátem ve stejném locale.

Nicméně na zadávání data a času je asi stejně lepší takový ten klikací kalendářík, resp. inteligentní parser (se specifickými funkcemi pro každou lokalizaci), protože uživatelé ho zadávají různě...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.