Autor Zpráva
cernokneznik
Profil *
Jak s PHP můžu změnit datetime z myslql, tedy"2013-06-06 16:32:00" na něco jako "6. Června v 16:32"? Potřebuji aby to bralo jakýkoliv čas
cernokneznik
Profil *
Už jsem to vyřešil souborem funkcí :
<?
function mesic($datum){
switch ($datum) {
    case 01:
        return "Ledna";
        break;
    case 02:
        return "Února";
        break;
    case 03:
        return "Března";
        break;
    case 04:
        return "Dubna";
        break;
    case 05:
        return "Května";
        break;
    case 06:
        return "Června";
        break;
    case 07:
        return "Července";
        break;
    case 08:
        return "Srpna";
        break;
    case 09:
        return "Září";
        break;        
    case 10:
        return "Října";
        break;        
    case 11:
        return "Listopadu";
        break;
    case 12:
        return "Prosince";
        break;
    default:
       return "Iksiksse";
       break;
}}
function den($den){
if($den < 10){ return substr_replace($den, '', 0, 1);}
else{ return $den;}
}

function datetimeconv($datetime){
$prom = explode (" ", $datetime);
$datum = Explode ("-", $prom[0]);
$cas = Explode (":", $prom[1]);
return"". den($datum[2]) .". ". mesic($datum[1]) ."   v $cas[0]:$cas[1]";
}
?>

pak jen vložím datetimeconv(2013-06-06 16:32:00) a mám to :D yay! jsem borec.
jenikkozak
Profil
Místo switche by bylo přehlednější použít pole.
$mesice = array(1 => "ledna", "února", "března"...);
Zdá se mi efektivnější z mysql získat jednotlivé položky zvlášť, než pak datum rozdělovat pomocí explode.
V češtině se na rozdíl od angličtiny názvy měsíců píší s malým písmenem na začátku.
Joker
Profil
cernokneznik [#2]:
Uvedený kód nebude fungovat správně.
Očekával bych toto chování:
echo mesic(08); // Srpna (to je správně)
echo mesic(09); // Srpna
echo mesic("08"); // Iksiksse
echo mesic("09"); // Iksiksse
echo mesic(""); // Srpna
echo mesic(8); // Iksiksse
echo mesic(9); // Iksiksse

Háček je v tom, že číslo uvozené nulou znamená zápis v osmičkové soustavě. Číslice 8 a 9 v osmičkové soustavě nejsou platné a obsahuje-li je číslo, načte se jen část před první neplatnou číslicí. Tedy 08 = 09 = 0.

Fungovat budou čísla bez nuly na začátku, částečně by fungovaly i řetězce ("01", "02" atd.), ale pak by nefungovalo třeba mesic(1).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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