Scripts

Datum converteren en valideren

Controleer of de input een geldige datum is en converteert de naar het formaat zoals het date_format patroon. De input opties zijn eu formaat dag/maand/jaar , us formaat maand/dag/jaar of pc formaat jaar/maand/dag. De output is een patroon volgens de date_format functie. De output heeft het -teken als scheidings teken.

datumconversiefunctie.php
<?php 

// beveilig input van een formulier
// $werkdatum = strip_tags($_POST['werkdatum']);

// test met verschillende datums
echo "test en converteer : ";
echo $werkdatum = "01-02.2016";

echo "<br> naar : ";
if ( DatumConverteren($werkdatum,'eu') ){
	// dit is een geldige dag/maand/jaar (eu) datum
	echo DatumConverteren($werkdatum,'eu','d-m-Y');    
} else {
    	echo "valse datum";
} 

function DatumConverteren($datum,$ori='eu',$patroon='Y-m-d'){
    // converteert en valideert datums 
    // input datum kan -/. scheidings tekens bevatten
    // input datum kan in m-d-y (us) Y-m-d (pc) d-m-y (eu)default formaat
    // output datum heeft - scheidings teken 
    // output kan in patronen volgens date_format php functie 
    switch ($ori){
        case "us":
            // maand dag jaar bron
            if (preg_match('/^(\d{1,2})[-\/.](\d{1,2})[-\/.](\d{2,4})$/', $datum, $matches)) {
                $year = $matches[3];
                $month = $matches[2];
                $day = $matches[1];
                if (checkdate($month,$day,$year)){
                    return date_format(date_create($year.'-'.$month.'-'.$day),$patroon);
                } else {
                    return false;
                }
            }   
            break;
        case "pc":
            // jaar maand dag
            if (preg_match('/^(\d{2,4})[-\/.](\d{1,2})[-\/.](\d{1,2})$/', $datum, $matches)) {
                $year = $matches[1];
                $month = $matches[2];
                $day = $matches[3];
                if (checkdate($month,$day,$year)){
                    return date_format(date_create($year.'-'.$month.'-'.$day),$patroon);
                } else {
                    return false;
                }
            }   
            break;
        default:
            // dag maand jaar
            if (preg_match('/^(\d{1,2})[-\/.](\d{1,2})[-\/.](\d{2,4})$/', $datum, $matches)) {
                $year = $matches[3];
                $month = $matches[2];
                $day = $matches[1];
                if (checkdate($month,$day,$year)){
                    return date_format(date_create($year.'-'.$month.'-'.$day),$patroon);
                } else {
                    return false;
                }
            }   
    }
}

?>

Reacties

0
Nog geen reacties.