eh ben, j'ai fait une recherche tout a l'heure sur les manips des dates et j'ai rien vu, alors je me suis mis a faire 3 fct qui manipulent des dates, c'est simple mais bon, cela p aider certains pour comparer des dates et obtenir le nombre de jour entre les deux ou avoir une date plus des jours si on ne sait pas a l'avance c q cel ava donner, bon vous verrez bien.
Source / Exemple :
//fonction qui prend en parametre une annee et qui retourne vrai si bissextile
//faux sinon, une annee est bissextille si( annee/ 1000 = 0)
//ou (annee/4 = 0 et annee/ 100 <> 0)
function bissextile($annee){
if(($annee%4==0 && $annee%100 != 0) || ($annee %1000==0))
return true;
else
return false;
}
//cette fonction renvoie une date en jour
//reçoit en parametre une date, c'est pour comparer par exemle 2 dates, j'ai pas trouver
//mieux que de les convertir en jour et de les comparer apres et comme cela, je sais
//directement le nombre de jours entre les 2 dates
function RetournerJour($DATE,$separator="-"){
$jour = 3600*24;//nombre de secondes en une journee
$result = explode($separator,$DATE); //le divise en jour,mois, annee
$retour = gmmktime(0,0,0,$result[1],$result[2],$result[0]);//le donne en seconde
$retour = $retour/$jour;//le donne en jour
$retour = intval($retour); //le convertit en entier
return $retour; //le retourne
}
function DatePlus($DATE,$nbjours){
$tmp = explode("-",$DATE); //je le divise suivant le caractere "-"
$tmp[0] = intval($tmp[0]);
$tmp[1] = intval($tmp[1]);
$tmp[2] = intval($tmp[2]);
switch($tmp[1]){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
$fin = 31; //cette varaible c'est pour savoir le nombre de jours du mois
break;
case 2:
if(bissextile($tmp[0])==true) // la c'est bissextile, cf la fct bissextile plus haut
$fin = 29;
else
$fin = 28;
break;
case 4:
case 6:
case 9:
case 11:
$fin = 30;
break;
}
if(($tmp[2]+$nbjours)<=$fin)
$tmp[2] += $nbjours; //la, la somme est inferieure au nombre de jours du mois
//donc on p juste incrmenter le nb jours de $nbjours en parametre
else{//ici non, on enleve le nombre de jours correspondant et puis on passe au mois suivant
//pour le mettre au nombre de jour qui reste
$tmp[2] = $nbjours - ($fin - $tmp[2]);
if($tmp[1] !=12) //comme on est en fin de mois, on regarde si c'est mois de dembre ou non
$tmp[1] ++; // pas mois de decembre, alors on passe juste au mois suivant, en incrementtant
else{ //mois de decmbre
$tmp[1] = 1; //le mois prochain devient janvier
$tmp[0] ++; //l'annee prochaine devient l'annee en cours + 1
}
}
//$jdc = gregorianToJd($tmp[1],$tmp[2],$tmp[0]);
//print(jdtogregorian($jdc));
//on va le retourner en chaine et pour cela, on les transforme en chaine les jours,mois,ans
for($i=0;$i<=2;$i++)
$tmp[$i] = strval($tmp[$i]);
//ensuite on verifie les jours et les mois avec un caractere pour les mettre
//en 2 caracteres conformement au mysql
if(strlen($tmp[1])==1)
$tmp[1] = "0" . $tmp[1];
if(strlen($tmp[2])==1)
$tmp[2] = "0" . $tmp[2];
//pour les années, on regarde suivant que ce soit 1,2,3caracteres,on ajoute
//le nombre de 0 avant pour que la longueur soit egale a 4 conforme a mysql
if(strlen($tmp[0])==1)
$tmp[0] = "000" . $tmp[0];
if(strlen($tmp[0])==2)
$tmp[0] = "00" . $tmp[0];
if(strlen($tmp[0])==3)
$tmp[0] = "0" . $tmp[0];
//la on concatene ce q'on a pour renvoyer la date voulue
//ici je l'ai mis suivant ce q met mysql
$chaine = $tmp[0] . "-" . $tmp[1] . "-" . $tmp[2] ;
return $chaine;
}
Conclusion :
bon, je pense q cela aide, sinon supprimer le c'est tout, je n'ai pas remarque de bug par contre vous pouvez le modifier comme vous voulez.Il se p aussi que des erreurs s'y st introduits par maladresse.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.