Accueil > > > PETITES MANIPULATIONS DES DATES
PETITES MANIPULATIONS DES DATES
Information sur la source
Description
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
- //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;
-
- }
//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.
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|