Autor Zpráva
Matess
Profil *
Zdravím,
chtěl bych převést datum z tohoto formátu 2008-12-31 (takto jej mám uloženo v DB (date)) do českého formátu 31. prosince 2008.

Je na to nějaká funkce?

Zkusil jsem něco takového, ale bezvýsledně:
$datum = "2008-12-31";
$datum = explode("-", $datum); 

$den   = $datum[2];
$mesic = array(1=>"leden", "unor", "březen", "duben", "květen", "červen", "červenec", "srpen", "září", "říjen", "listopad", "prosinec");
$mesic = $mesic[$datum[1]];
$rok   = $datum[0];


Vyhoří to na měsíci, protože array je počítán od jedničky a měsíc se ukládá ve formátu 01, 02, ... 11, 12.
Čili fungují jen měsíce 10, 11 a 12.

Prosím poraďte mi jak se to dá udělat. Děkuji.
Joker
Profil
Matess
2008-12-31 (takto jej mám uloženo v DB (date)) do českého formátu 31. prosince 2008.
Pokud by se měsíc nechal prostě číselně, dá se to udělat celkem jednoduše:
SELECT DATE_FORMAT(datum, "%e. %c. %Y") FROM tabulka
...dá například 3. 7. 2008

S českým názvem měsíce bych si asi vyselektoval zvlášť den, měsíc a rok a potom to seskládal.
Další možnost je vyselektovat si datum a anglickým názvem měsíce a ten potom nahradit českým:
SELECT DATE_FORMAT(datum, "%e. %M %Y") FROM tabulka -- vznikne např. 3. July 2008
a následně nahradit podle pole:
$preklad = array("January"=>"ledna", "February"=>"února",...);
lordfrikk
Profil
A co tohle? Sice ti to neumožní mít skloňovanou formu (prosince namísto prosinec), ale funguje to bezvadně a je to jednoduché.

<?php
$datum = "2008-12-31";
setlocale(LC_ALL, 'czech');
echo strftime('%d. %B %Y', strtotime($datum));
?>
Alphard
Profil
řešení na úrovní mysql
http://www.linuxsoft.cz/article.php?id_article=1034
Matess
Profil *
Díky všem.
Matess
Profil *
Nakonec jsem to vyřešil takto:

$mesic = array("01"=>"leden", "02"=>"unor", "03"=>"březen", ...


Alphard
Tvé řešení je perfektní, ale chce to hlubší znalosti MySQL. Díky

lordfrikk
Super. Díky, ale bohužel potřebuji aby to skloňovalo. Budu si to pamatovat a třeba příště to na něco využiji.

Ještě jednou díky všem!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: