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

A voir également:

2 réponses

fidraman Messages postés 196 Statut Membre 8
 
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
fidraman Messages postés 196 Statut Membre 8
 
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