Control saisie " date"

sabri22 Messages postés 21 Statut Membre -  
fidraman Messages postés 196 Statut Membre -
je cherche à faire control saisie en java dans un textfield je vais qu'il accepte que des date selement , j'ai 2 champs textfield debut et fin et le 3ème dois afficher le nbre des mois c'est à dire la différence entre date fin et date début en nbre de mois
j'aimerais que vous m'aider et merci d'avance ... je travail avec eclipse

2 réponses

  1. fidraman Messages postés 196 Statut Membre 9
     
    bonsoir ,
    voila la fonction que tu doit utiliser :

    function isDateValid(chaineDate) {

    \\ Je regarde tout d'abord si la chaîne n'est pas vide, sinon pas la peine d'aller plus loin
    if (chaineDate != "") return false

    \\ J'utilise split pour créer un tableau dans lequel je récupère les jour mois année
    \\ J'attends bien sûr une date formatée en JJ/MM/AAAA
    var ladate = (chaineDate).split("/")

    \\ Si je n'ai pas récupéré trois éléments ou bien s'il ne s'agit pas d'entiers, pas la peine non plus d'aller plus loin
    if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) return false

    \\ Sinon, c'est maintenant que je crée la date correspondante. Attention, les mois sont étalonnés de 0 à 11
    var unedate = new Date(eval(ladate[2]),eval(ladate[1])-1,eval(ladate[0]))

    \\ Bug de l'an 2000 oblige, lorsque je récupère l'année, je n'ai pas toujours 4 chiffres selon les navigateurs, je rectifie donc ici le tir.
    var annee = unedate.getYear()
    if ((Math.abs(annee)+"").length < 4) annee = annee + 1900

    \\ Il ne reste plus qu'à vérifier si le jour, le mois et l'année obtenus sont les mêmes que ceux saisis par l'utilisateur.
    return ((unedate.getDate() == eval(ladate[0])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[2])))
    }

    ou bien lisez bien ce sujet :
    http://www.asp-php.net/scripts/scripting/datecontrol.php
    tu trouvera certainement ce que tu veut bien expliqué
    0
  2. fidraman Messages postés 196 Statut Membre 9
     
    et pour avoir la difference entre les 2 date de nmp quelle format tu suit cela :

    <?php
    //Definir deux dates
    $d1 = '01/03/2008';
    $d2 = '01/03/2009';

    //appel de fonction
    distance_time($d1,$d2);
    /**
    *Retourner une période, un mois ou bien un jour
    */function distance_time($from,$to){
    $from_d=substr($from,0,2);
    $from_m=substr($from,3,2);
    $from_y=substr($from,6,4);

    $to_d=substr($to,0,2);
    $to_m=substr($to,3,2);
    $to_y=substr($to,6,4);

    $from_time = mktime(0,0,0,$from_m,$from_d,$from_y);
    $to_time = mktime(0,0,0,$to_m,$to_d,$to_y);

    //Mois de début
    $from_day = date('d',$from_time);
    $from_month = date('m',$from_time);
    $from_year = date('Y',$from_time);

    //Date de fin
    $to_day = date('d',$to_time);
    $to_month = date('m',$to_time);
    $to_year = date('Y',$to_time);

    //calculer le nombre de jours en miunte
    $dm = $distance_in_minutes = abs(($to_time - $from_time))/60 + 1440 ;

    //Nombre de jour en minute est > 0
    if($dm > 0 ){
    //période d'un mois
    if($dm >= 40320 && $dm <= 44580){
    //Test si le même mois dans la même année
    if($from_month == $to_month && $from_year == $to_year){
    //nombre de jours de mois
    $nb_jours = get_month($from_year,$from_month);
    if($nb_jours == $to_day){
    echo date( "F" , mktime( 0 , 0 , 0 , $to_month ) ) .' '. $to_year;
    }
    }else{
    echo 'De '.$from_day.'/'.$from_month.'/'.$from_year.' à '.$to_day.'/'.$to_month.'/'.$to_year;
    }
    }
    else if($dm >= 1440 && $dm < 2879){
    echo 'Le '.$from_day.'/'.$from_month.'/'.$from_year;
    }
    else{
    echo 'De '.$from_day.'/'.$from_month.'/'.$from_year.' à '.$to_day.'/'.$to_month.'/'.$to_year;
    }
    }
    }

    /**
    *
    *Récuperer le nombre de jours de mois en question
    */function get_month($year, $month){

    $fev = '28';
    //Vérifier si l'année est bissextiles
    if($month == '02'){
    if($year%4 == 0){
    $fev = '29';
    }else{
    $fev = '28';
    }
    }
    //Enlever le 0 pour les mois < 10
    if($month < 10 ){
    if(strlen($month) == 2){
    $month = substr($month,1,1);
    }
    }
    $mois = array(0,31,$fev,31,30,31,30,31,31,30,31,30,31);

    return $mois[$month];
    }
    ?>
    0