Verificare tipar de data cu diferenta de 2 luni

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Stefan
Mesaje:117

Verificare tipar de data cu diferenta de 2 luni

Salut, cum as putea verifica daca datele introduse de un utilizator respecta un anumit tipar ?
As vrea ca daca nu respecta acel tipar (sa introduca o data dupa modelul aaaa-ll-zz , cu tot cu "-" si sa verifice daca este valid, adica sa nu poata introduce la zi > 31 sau la luna > 12, anul introdus sa fie acelasi cu anul actual, iar la luna sa nu poata introduce o diferenta mai mare de 2 luni fata de luna actuala) sa apara o eroare.

MarPlo Mesaje:4343
Salut
Vezi daca iti e de folos functia din acest exemplu.

Cod: Selectaţi tot

//check if $dt is valid date format year-month-day, in the range of 2 months
function checkDt2m($dt){
  $re = false;
  $d = DateTime::createFromFormat('Y-m-d', $dt);
  if($d && $d->format('Y-m-d') === $dt){
    $prev2_m = strtotime(' -2 month');  //timestamp of previous 2 months
    $next2_m = strtotime(' +2 month');  //timestamp of next 2 months
    $dt = strtotime($dt);  //timestamp of $dt

    //if $dt in the range of 2 months
    if($dt >= $prev2_m && $dt <= $next2_m) $re = true;
  }
  return $re;
}

$date ='1016-06-25';

if(!checkDt2m($date)) echo 'Not accepted date';

//Tests
var_dump(checkDt2m('2016-13-25'));  //false
var_dump(checkDt2m('2016-06-32'));  //false
var_dump(checkDt2m('2016-06-25'));  //true