Autor Zpráva
ash
Profil
Snáď sa niekomu bude hodiť funkcia pre kontrolu a formátovanie dátumu

////////////////////////////////////////////////////////////////////// ///
// Kontrola a spracovanie dátumu z formulára
// vracia dátum v tvare rrrr-mm-dd (vhodný pre zápis do db) alebo FALSE ak dátum nie je platný
// Možné vstupy: dd.mm.rrrr dd.mm.rr d.m.rr d.m.rrrr
// d.m. d.m (doplní sa aktuálny rok)
// d (doplní sa aktuálny mesiac a rok)
// +d -d (vypočíta sa dátum o d dní dopredu alebo späť oproti aktuálnemu)
// Oddeľovač v dátume môže byť bodka, lomka alebo mínuska
// Príklady spracovateľných vstupov: 11.09.2005, 2.5., 19, +30, -10, 12/6, 02032005, 0501, 21-1-1999 a pod.

function urob_datum($datum='+0')
{

if (substr($datum, 0, 1)=='+' or substr($datum, 0, 1)=='-' ) { // zadaný prírastok v dňoch alebo dni do mínusu
$diff = intval($datum)*24*3600; // počet sekúnd v rozdiele (kladné alebo záporné)
$fdatum = date('Y-m-d',mktime()+$diff);
return $fdatum;
}

if (strlen($datum)<=2) { // zadaný len deň
$intdatum = intval($datum); // aby sme tam nemali písmená
$pocet_dni_v_mesiaci = cal_days_in_month( CAL_GREGORIAN, date('m'), date('Y'));
if ($intdatum>$pocet_dni_v_mesiaci or $intdatum<=0) return FALSE; // nedovolíme prechod do ďalšieho/minulého mesiaca
$cas = strtotime(date('Y-m').'-'.strval($intdatum));
if ($fdatum===-1) { // zlý dátum
return FALSE;
}else{
$fdatum = date('Y-m-d',$cas);
return $fdatum;
}
}

if ( ereg(".*[/.-].*", $datum) ) { // ak je dátum oddelený (obsahuje bodku, lomku alebo mínusku)
$datum0 = split('[/.-]', $datum); // predpokladáme (d)d.(m)m.(rr)rr
}else{ // dátum ako reťazec bez oddeľovačov
$datum0[0] = substr($datum, 0, 2);
$datum0[1] = substr($datum, 2, 2);
$datum0[2] = substr($datum, 4);
}
if (empty($datum0[2])) $datum0[2] = date('Y'); // ak nie je zadaný rok, doplníme aktuálny
if (intval($datum0[2])<100) $datum0[2] = strval(2000 + intval($datum0[2])); // ak nie sú zadané prvé dve číslice roku
if (checkdate($datum0[1], $datum0[0], $datum0[2])) { //dátum je ok
$fdatum = $datum0[2].'-'.$datum0[1].'-'.$datum0[0];
return $fdatum;
}else{
return FALSE; // zlý dátum
}

return FALSE; // vstup bol nerozoznateľný
} // koniec funkcie urob_datum
Toto téma je uzamčeno. Odpověď nelze zaslat.

0