Dobrý den, mám problém s funkcí mktime(). Ukážu na příkladu:
zdroj:
=====================
<?
$den = date (mktime (16,30,00,02,09,2008));
echo $den;
echo "<BR>";
echo date("d.m.Y H:i:s", $den);
echo "<HR>";
?>
=====================
a výsledek:
=====================
1201793400
<BR>
31.01.2008 16:30:00
<HR>
=====================
což je evidentně blbost. Problém je, že takhle zlobí jen některé datumy. Děkuji za odpověď
>> $den = date (mktime (16,30,00,02,09,2008));
Co to je za zapis?
Staci pouze $den = mktime (16,30,00,02,09,2008);
Jinak jsem si to taky vyzkousel, a zjistil jsem, ze mu nejak vadi ty nuly pred cislem.
Takze je lepsi to napsat jako: $den = mktime (16,30,0,2,9,2008);
s těma nulama i s tim date je to podle cz.php.net, takže to nechápu. Každopádně pomohlo je dát pryč.
no tenhle kontext je přeci jen trošku jiný
echo date ("M-d-Y", mktime (0,0,0,12,32,1997));
a pak na http://cz.php.net/manual/cs/function.mktime.php je:
int mktime ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst]]]]]]] )
všechny argumenty uvedené jako int
<HTML>Pokud číslo začíná nulou, jedná se o zápis čísla v osmičkové soustavě. Správně by měl parser PHP při 09 zařvat, protože to samozřejmě není zápis čísla v osmičkové soustavě. V anglické verzi manuálu tento přehmat není.</HTML>
Za rady děkuju. s tim mktime mám ještě jeden problém. Když zadám:
echo "d.m.Y H:i:s", mktime (10,05,0,10,1,2008);
je vše v pořádku,
ale jakmile použiju proměnou (viz příklad níž)
$datum = "10,05,0,10,1,2008";
echo "d.m.Y H:i:s", mktime ($datum);
funkce mi hodí do timestampu aktuální hodnoty, nevíte proč, nebo jak se PHP přemluvit aby se mnou komunikovalo?
Koukal jsem se na cz.php.net, ale moc to nechápu jak na to. předem moc děkuju
asi proto, že funkce mktime očekává víc parametrů a dostane jen jeden
Nemůžeš použít proměnnou tímto způsobem. Argumenty musí být odděleny čárkou, Ty mu vnutíš řetězec, tedy jen jeden argument. Navíc jako ten jeden argument očekává integer a přijde mu string s čárkami uvnitř. Takže to mktime vůbec nepochopí a hodí aktuální čas. Jiný programovací jazyk by tě hnal! Očekává int, ale dostane string. PHP je příliš benevolnetní, sežere všechno a pak se programátor diví.
$den = 10;
$mesic = 5;
$rok = 2008;
$stamp = mktime(0,0,0,$mesic,$den,$rok);
<HTML>A jestli to potřebujete nutně předávat takto v řetězci, napište si vlastní funkci, která tento řetězec přijme, nakrájí (funkce split) a vrátí výsledek funkce mktime.</HTML>