Autor Zpráva
gaminn
Profil *
Zdravím,
jakým způsobem lze získat lokální reprezentaci data a času pro danou lokalitu vybranou pomocí setlocale(LC_TIME, 'xxxxxx'); Funkce strftime() podporuje %x a %X parametry pro lokální datum (ve formátu DD.MM.YYYY pro češtinu) a čas (HH:MM:SS). To je ale málo, co když chci, abych pro češtinu dostal výstup např. 21. srpna 2006 ekvivalentně pro angličtinu jako August 21st 2006 apod.
Anonymní
Profil *
no pokial je mi znamo tak sklonovat mesiace nevie, tj je mozne dostat akorat tak 21. srpen 2006 a stym anglickym st, nd, rd, th je to asi podobne... vzdy si vsak mozes napisat vlastnu func
havs
Profil
Já si radší psával vlasní skript s polem, protože to na každém hostingu chodilo jinak, někde vůbec. Doma mi třeba nefunguje den ve formátu 1-10 (%e).

setlocale(LC_ALL, 'cz-CZ');
$loc = setlocale(LC_TIME, NULL);
echo strftime("%A %e %B %Y %H:%M:%S");
gaminn
Profil *
To znamená, že bych si musel pro každou lokalizaci napsat vlastní datové a časové vzory (tedy nejspíš jen ty datové, čas mi stačí tak, jak jej lze získat pomocí %X). Něco jako %den. %měsíc %rok pro češtinu, %měsíc %den%přípona %rok pro angličtinu. A ty obsluhovat vlastní funkcí. Opravdu ale nikdo neví o nějakém hotovém řešení, zdá se mi to jako problém, který už musel být někdy řešen.
gaminn
Profil *
Koukám na Místní a jazykové nastavení v ovládacích panelech mých Windows, u každého je uveden čas, krátký a dlouhý formát data. Čas a krátký formát data lze získat pomocí funkce strftime(), já bych ale potřeboval i ten dlouhý, věřím, že bude v php někde ukryt;) Jen nevím kde...;)
havs
Profil
proč se patlat s tím setlocale(), které stejně blbne,
někam nahoru bych includoval funkci:

function czdat($datum) {
$datum = strtotime($datum);

$den = array("Mon" => "pondělí", "Tue" => "úterý", "Wed" => "středa",
"Thu" => "čtvrtek", "Fri" => "pátek", "Sat" => "sobota", "Sun" => "neděle");

$mesic = array(1=>"ledna", "února", "března", "dubna", "května",
"června", "července", "srpna", "září", "října", "listopadu","prosince");

echo $den[date("D", $datum)].date(", j. ", $datum);
echo $mesic[date("n", $datum)].date(" Y G:i:s", $datum);
}

a pak stačí vkládat:
echo czdat("2006-08-22 01:49:36");

nebo:
echo czdat(1156204176);
a řádek: $datum = strtotime($datum); umazat
Anonymní
Profil *
az na to ze echo czdat() nevracia hodnotu, vysledkom bude NULL, ked uz tak bez toho echo.. len czdat() to je len taka drobna poznamka :)
havs
Profil
Asi to tam být nemá, já uživatelské fce nepoužívám - nepostřehnul jsem, protože mi to tady funguje i s echem - mám tu test v druhém okně.
gaminn
Profil *
havs

Tato funkce je podle mě trochu těžkopádná, pro mě je důležité, abych si mohl vybírat různé formáty data a času (minimálně 3 - lokální reprezentaci času, krátký formát data a dlouhý formát data), a navíc na svém webu pracuji s více jazyky, než jen s češtinou.

Takže asi nezbývá, než si napsat vlastní řešení, napsat si pro každý jazyk, v jakém formátu data a časy zobrazovat.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0