Petites manipulations des dates

Contenu du snippet

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.

A voir également

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.