Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2982 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Débuter avec les dates et le temps [Tuto]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débuter avec les dates et le temps [Tuto]

n°880372
T509
$job->GetJob(now)
Posté le 22-10-2004 à 21:20:02  profilanswer
 


Salut à tous, j'ai été amené à rédiger ce tutos alors je vous en fait profiter.
 
A+


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
mood
Publicité
Posté le 22-10-2004 à 21:20:02  profilanswer
 

n°880375
T509
$job->GetJob(now)
Posté le 22-10-2004 à 21:20:47  profilanswer
 

Afficher la date du jour
 
Affichons la date et l'heure du serveur.  
 

Code :
  1. <?php
  2. //affichage de la date et de l'heure sous le format DD/MM/AAAA HH:mm
  3. echo strftime("%d/%m/%Y %H:%M" );
  4. ?>


Le résultat obtenu est 01/06/2004 12:00
 
Ce script fait appel à la fonction PHP strftine(). Elle répond à une chaîne de caractères qui lui est donnée en paramètres. Elle remplace les mots-clé inclus dans cette chaîne et les remplace par les éléments demandés de la date.
Voici quelque uns de ces mots-clé :
 

  • %d : donne le numéro du jour du mois courant. Il est compris entre 01 et 31.
  • %m  : donne le numéro du mois. Il est compris entre 01 et 12.
  • %Y : donne l'année sur 4 chiffre.
  • %H : donne l'heure sur la base de 24 heures
  • %M : donne les minutes.
  • %w : donne le numéro du jour de la semaine. Le dimanche est considéré comme le jour 0
  • %A : donne le nom complet du jour de la semaine
  • %B : donne le nom complet du mois.


Il existe d'autres mots-clé acceptés par cette fonction. Ils sont disponibles et expliqués dans le manuel en ligne de PHP
 
Il est également possible d'afficher la date en toutes lettres. Regardons ce script :
 

Code :
  1. <?php
  2. //affichage de la date sous le format jour numéro mois année
  3. echo strftime("%A %d %B %Y" );
  4. ?>


 
L'exécution de ce script affiche, dans le navigateur web, "tuesday 01 june 2004"
 
Oui, mais ce n'est pas en français. En effet, le langage PHP est développé et maintenu en anglais. Pour obtenir la date en français, il faut assurer la traduction soit même. Regardons et analysons le script suivant.
 
 

Code :
  1. <?php
  2. //déclaration des tableaux de correspondance pour avoir les noms en français
  3. $mois = array(1 => 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
  4. $jour = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
  5. //récupération du jour
  6. $no_jour = intval(strftime("%w" ));
  7. $date = $jour[$no_jour];
  8. //récupération du numéro du jour dans le mois
  9. //nous prenons en compte le 1er du mois
  10. $no_date = intval(strftime("%d" ));
  11. if ($no_date == 1) $no_date = "1er";
  12. $date .= " ".$no_date;
  13. //recuperation du mois
  14. $no_mois = intval(strftime("%m" ));
  15. $date .= " ".$mois[$no_mois];
  16. //ajout de l'année
  17. $date .= " ".strftime("%Y" );
  18. //affichage de la date
  19. echo $date;
  20. ?>


 

Le résultat affiché sera : mardi 1er Juin 2004  

Quelques explications :
 
Nous avons commencé par déclarer 2 tableaux : $mois et $jour.  
Le premier tableau, $mois, contient la liste des mois de l'année. Nous choisissons de faire commencer son index à "1" car le mois "0" n'existe pas.  
Le second, $jour, contient la liste des jours de la semaine. Dans le système PHP, le dimanche est le jour "0" de la semaine. Nous utilisons alors un index normal pour le tableau.
 
strftime("%w" ) renvoie, dans l'exemple, 2. C'est le second jour de la semaine. Cela nous permet d'identifier le nom du jour de la semaine dans le tableau $jour. Toutefois, strftime() renvoie une chaîne de caractères et pour récupérer le nom du jour dans le tableau correctement, nous avons besoin d'une valeur numérique. C'est le rôle de la fonction intval() qui traduit le numéro du jour en numérique.
Nous avons donc $no_jour = 2 et $jour[2] = "mardi". Il reste à donner à $date la valeur $jour[$no_jour]. Donc $date = "mardi" à ce stade ci.
 
En ce qui concerne le numéro du jour dans le mois, nous le récupérons de la même façon que ci-dessus. Ensuite nous contrôlons s'il est égal à 1. Aujourd'hui, 1er juin, nous avons $no_date = 1. Cela nous permet de remplacer "1" par "1er". Nous ajoutons ceci à la date. A ce stade, $date = "mardi 1er".  
Attention : nous avons ici utilisé l'opérateur ".=". Il permet de concaténer ce qui est après le signe = à la fin du contenu de $date. Si le point était oublié, le contenu serait simplement remplacé. Cette opération est équivalente à  
$date = $date." ".$no_jour.
 
Il reste à s'occuper du mois de la même façon que pour le jour et d'ajouter l'année. Nous pouvons ensuite afficher l'ensemble.
 
 
Gérer les dates
 
Dès que l'on doit naviguer dans le calendrier à partir de la date du jour, cela devient vite un casse tête. Il devient difficile de prendre en compte toutes les contraintes : hier, nous étions dans la même semaine que celle-ci ? dans le même mois ? dans la même année ? Cette année est elle bissextile ?
La logique des dates n'est clairement pas aussi simple à gérer qu'un compteur numérique.
 
Pour l'exemple, nous sommes le mardi 1er juin 2004 soit le 153ème jour de cette année 2004 bissextile. Fixons également l'heure : 14h52.
 
Pour travailler correctement, il nous faut une référence précise à partir de laquelle nous pourrons effectuer nos calculs. Cette référence a été choisie de manière arbitraire au 1er janvier 1970 à 0h00. A partir de là, si nous connaissons le nombre de secondes écoulées, nous conaissons aussi de la date par simple calcul arithmétique. Ce nombre de secondes est appelé Timestamp.
 
Nous rappelons seulement qu'une journée est composée de 24 heures divisées en 60 minutes. Ces dernières sont aussi divisées en 60 secondes. Dans une journée, il y a donc 86400 secondes.
 
 
Passons au concret ! Nous souhaitons connaître la date à laquelle nous serons dans 43 jours et celle qu'il était 19 jours auparavant. Analysons un peu l'exemple suivant :
 

Code :
  1. <?php
  2. //Récupération du timestamp du jour
  3. $aujourdhui = time();
  4. //timestamp dans 43 jours
  5. $futur = $aujourdhui + 43 * 86400;
  6. //timestamp 19 jours auparavant
  7. $passe = $aujourdhui - 19 * 86400;
  8. //affichage des dates
  9. echo "Aujourd'hui ".date("l d F Y", $aujourdhui)."<br>";
  10. echo "Dans 43 jours, nous serons le ".date("l d F Y", $futur)."<br>";
  11. echo "Il y a 19 jours nous étions le ".date("l d F Y", $passe)."<br>";
  12. ?>



Le résultat de ce script :
Aujourd'hui Tuesday 01 June 2004
Dans 43 jours, nous serons le Wednesday 14 July 2004
Il y a 19 jours nous étions le Thursday 13 May 2004

Que s'est il passé ? Nous avons commencé par récupérer le timestamp du jour. Cela nous a donné le nombre de secondes par rapport au 01/01/1970. Ceci est récupéré par la fonction time(). A ce stade $aujourdhui = 1086040800.
 
Pour calculer les intervalles de temps, il nous suffit d'ajouter ou de soustraire autant de fois 86400 secondes que l'on souhaite de nombre de jours.
 
L'étape suivante consiste à transformer les timestamps en date lisible par tous. C'est le rôle de la fonction date(). Elle demande que nous lui fournissions 2 paramètres. Le premier est une chaîne de caractères constitués de mots-clé, le second est le timestamp de la date choisie. La chaîne de caractères fonctionne sur la même idée qu'avec la fonction strftime() utilisée ci-dessus. Toutefois les mots-clé ne sont pas identiques. Quelques mots-clé :
 

  • l : donne le nom du jour en toutes lettres (en anglais)
  • d : donne le numéro du jour du mois sur 2 chiffres
  • F : donne le nom du mois en toutes lettres (en anglais)
  • Y : donne l'année sur 4 chiffres
  • G : donne l'heure au format 24h sans zéro initial
  • i : donne les minutes
  • w : donne le numéro du jour de la semaine (dimanche est zéro)


Les autres mots-clé sont disponibles là : http://fr2.php.net/manual/fr/function.date.php
 
Maintenant, nous souhaitons travailler avec une date de base autre que celle d'aujourd'hui. Par exemple, nous désirons faire les mêmes calculs à partir du 17/02/2019.
Vous l'aurez compris, nous avons besoin du timestamp de cette date. Regardons le code suivant :
 

Code :
  1. <?php
  2. //Récupération du timestamp du 17/02/2019
  3. $base = gmmktime(0,0,0,2,17,2019);
  4. //timestamp dans 43 jours
  5. $futur = $base + 43 * 86400;
  6. //timestamp 19 jours auparavant
  7. $passe = $base - 19 * 86400;
  8. //affichage des dates
  9. echo "La date de base ".date("l d F Y", $base)."<br>";
  10. echo "43 jours après la base ".date("l d F Y", $futur)."<br>";
  11. echo "19 jours avant la base ".date("l d F Y", $passe)."<br>";
  12. ?>


 

Le résultat est :
La date de base : Sunday 17 February 2019
43 jours après la base : Monday 01 April 2019
19 jours avant la base : Tuesday 29 January 2019

 
La seule différence qui est intervenue par rapport à l'exemple précédent est l'introduction de la fonction gmmktime(). Elle calcule le timestamp d'une date donnée. Cette date peut prendre compte de l'heure précise également.
 
 
Jusqu'à présent, nous avons travaillé avec un décalage de jours. Il est tout à fait possible de travailler avec un décalage d'heures ou de minutes. L'intervalle utilisé était 86400 secondes. Pour les heures, cet intervalle devient 3600 secondes et pour les minutes, il devient 60 secondes. Exemple :
 

Code :
  1. <?php
  2. //Récupération du timestamp actuel
  3. $maintenant = time();
  4. //timestamp dans 43 heures
  5. $futur = $maintenant + 43 * 3600;
  6. //timestamp 19 minutes auparavant
  7. $passe = $maintenant - 19 * 60;
  8. //affichage des dates
  9. echo "Nous sommes le : ".date("l d F G:i", $maintenant)."<br>";
  10. echo "Dans 43 heures : ".date("l d F G:i", $futur)."<br>";
  11. echo "Il y a 19 minutes : ".date("l d F G:i", $passe)."<br>";
  12. ?>



Le résultat de ce script est :
Nous sommes le : Tuesday 01 June 14:52
Dans 43 heures : Thursday 03 June 9:52
Il y a 19 minutes : Tuesday 01 June 14:33

 
 
 
Nous souhaitons maintenant rendre un dossier dans 19 jours en sachant que nous ne travaillons tous les jours sauf samedi et dimanche. Essayons de mettre en application les fonctions vues ci-dessus. Il nous faut commencer par analyser les contraintes :
 

  • Il ne faut pas que la date de début soit un samedi ou un dimanche. Sinon, il faut se positionner sur le lundi suivant et nous ajoutons donc 1 ou 2 jours à la date courante.
  • Il faut savoir quel jour de la semaine nous sommes. En effet, commencer le lundi ou le vendredi ne donnera pas le même résultat.  
  • On calcule le nombre de jours restant dans la semaine avec l'opération nombre de jours ouvrables + 1 - numéro du jour courant.
  • Si le délai est inférieur au nombre de jour encore disponible dans la semaine, alors nous pourrons rendre le dossier avant la fin de semaine. Sinon, il faudra passer un premier week-end et décompter le nombre de jours déjà travaillés. Cela nous donne un temps restant à travailler depuis un lundi.
  • De là, il faut connaître le nombre de semaines complètes nécessaires pour réaliser le travail à partir du temps de travail restant. La partie entière de la division du nombre de jours restant par le nombre de jours ouvrables nous y conduit.
  • Nous connaissons donc le nombre de week-end total pour réaliser le travail. Il reste à en déduire le nombre de jours chomés à ajouter à la date.  


La traduction en code donne :
 

Code :
  1. <?php
  2. $ouvrable = 5; //jours ouvrables dans la semaine
  3. $delai = 19; //délai en jours ouvrables
  4. //Récupération du timestamp d'aujourd'hui
  5. $aujourdhui = time();
  6. //On se place sur le premier jour ouvrable suivant si aujourd'hui n'est pas ouvrable
  7. if (gmdate("w", $aujourdhui) == 0) $aujourdhui += 86400;
  8. if (gmdate("w", $aujourdhui) == 6) $aujourdhui += (86400 * 2);
  9. //nombre de jours utilisables de la semaine en cours
  10. $jour_courant = gmdate("w", $aujourdhui);
  11. $nb_j_util = $ouvrable + 1 - $jour_courant;
  12. if ($delai > $nb_j_util) {
  13. //le reste de la semaine en cours n'est pas suffisant
  14. $delai_restant = $delai - $nb_j_util;
  15. //nombre de week-end passé = 1 + en fonction du travail restant
  16. $nb_we = 1 + floor($delai_restant / $ouvrable);
  17. //nombre de jours chomés à ajouter au délai
  18. $nb_jour = $nb_we * (7 - $ouvrable);
  19. }
  20. else {
  21. //le reste de la semaine en cours est suffisant
  22. //il n'y a pas de jour chomés à ajouter
  23. $nb_jour = 0;
  24. }
  25. //calcul du timestamp du jour de rendu
  26. $rendu = $aujourdhui + 86400 * ($delai + $nb_jour);
  27. //affichage des dates
  28. echo "Date de début : ".gmdate("l d F Y", $aujourdhui)."<br>";
  29. echo "Date de fin : ".gmdate("l d F Y", $rendu)."<br>";
  30. ?>


 

Le résultat de ce script est :
Date de début : Tuesday 01 June 2004
Date de fin : Monday 28 June 2004

Les fonctions vue plus haut, time() et gmdate(), nous permettent de passer d'une date au timestamp, de faire les calculs et de retrouver une date lisible par tous.  
 
 
 
Mesurer le temps
 
Comment calculer l'intervalle de temps précis depuis un événement ? Là encore les fonctions time() et mktime() sont utiles. Regardons le code suivant :
 

Code :
  1. <?php
  2. //date de l'événement au format YYYY-mm-jj HH:MM:SS
  3. $date_ini = "2004-04-26 14:12:25";
  4. $maintenant = time();
  5. //récupération des éléments de la date à traiter
  6. $date = explode(" ", $date_ini); //division date et heure
  7. $heure = explode(":", $date[1]); //division des éléments de l'heure
  8. $date = explode("-", $date[0]); //division des éléments de la date
  9. //récupération du timestamp de la date
  10. $timestamp = mktime($heure[0], $heure[1], $heure[2], $date[1], $date[2], $date[0]);
  11. //vérification de l'antériorité des dates
  12. if ($timestamp > $maintenant) {
  13. //la date à évaluer est dans le futur
  14. $calcul = "jusqu'au $date_ini , compte à rebours de ";
  15. $temp = $timestamp;
  16. $timestamp = $maintenant;
  17. $maintenant = $temp;
  18. }
  19. else {
  20. //la date à évaluer est dans le passé
  21. $calcul = "depuis le $date_ini , le temps écoulé est de ";
  22. }
  23. //calcul du nombre de jours
  24. $difference = $maintenant - $timestamp;
  25. $residu = $difference % 86400;
  26. $nb_jours = floor(($difference - $residu) / 86400);
  27. //calcul du nombre d'heures
  28. $difference = $residu;
  29. $residu = $difference % 3600;
  30. $nb_heures = floor(($difference - $residu) / 3600);
  31. //calcul du nombre de minutes
  32. $difference = $residu;
  33. $residu = $difference % 60;
  34. $nb_minutes = floor(($difference - $residu) / 60);
  35. //nombre de secondes
  36. $nb_secondes = $residu;
  37. //affichage du résultat
  38. echo $calcul.$nb_jours." jours ".$nb_heures." heures ".$nb_minutes." minutes et ".$nb_secondes." secondes";
  39. ?>



Le résultat est donc :  
depuis le 2004-04-26 14:12:25, le temps écoulé est de 36 jours 0 heures 40 minutes et 0 secondes

Le principe est donc simple. Nous commençons par récupérer les différentes éléments de la date : année, jour, mois, heure, minutes et secondes. Nous nous en servons pour calculer le timestamp de cette date. Nous retranchons le timestamp de la date actuelle et nous obtenons le nombre de secondes écoulées (ou restantes) depuis la date fixée. Il reste ensuite à calculer le nombre de jours, d'heures, de minutes et de secondes.
 
 
Créer des scripts PHP nécessite parfois d'évaluer leurs performances. Pour cela, un critère objectif est de calculer le temps d'exécution des lignes de code. Oui, mais comment faire ? Une fonction est très utile pour cela : microtime().
 
Regardons le code source suivant :
 

Code :
  1. <?php
  2. //début de votre script
  3. $depart = microtime();
  4. $depart = explode(" ", $depart);
  5. $depart = (float)$depart[1] + (float)$depart[0];
  6. //ce bloc est à remplacer par votre code
  7. $a = 0
  8. for ($i = 0; $i < 10000000; $i++) {
  9. $a++
  10. //incrémente la variable $a 10000000 fois
  11. //cela sert seulement à allonger le temps d'exécution
  12. }
  13. //fin du script
  14. $fin = microtime();
  15. $fin = explode(" ", $fin);
  16. $fin = (float)$fin[1] + (float)$fin[0];
  17. //affichage du temps d'exécution
  18. $temps = $fin - $depart;
  19. echo "temps écoulé : ".$temps." secondes"
  20. ?>



Le résultat est "temps écoulé : 0.00953253 secondes".

 
L'idée du script et de comparer la date de début et la date de fin.  
Analysons le fonctionnement du départ. A l'appel de la fonction microtime(), départ reçoit une chaîne de caractère comme celle-ci :  
$depart = "0.36768600 1086772201".  
Cette fonction renvoie, comme la fonction time() vue auparavant, le timestamp. Toutefois, elle y ajoute la fraction de seconde écoulée à l'appel de la fonction. C'est une version plus précise de la fonction time().
Pour récupérer les deux valeurs, il faut casser la chaîne de caractères. Nous confions ceci à la fonction explode() en lui demandant de séparer les éléments à chaque espace rencontré. La variable $depart est maintenant un tableau de deux éléments : $depart[0] = "0.36768600" et $depart[1] = "1086772201" .
Il nous reste à additionner ces deux valeurs, en les transformant au passage en nombre réel avec (float), pour obtenir un nombre décimal qui est le timestamp de départ.
 
A la fin du script nous refaisons la même chose et la simple soustraction des deux dates nous donne le temps écoulé en secondes.
 


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°881335
Xav_
The only one...
Posté le 24-10-2004 à 15:16:33  profilanswer
 

excellente initiative ce genre de tuto, je plussoie fortement.


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°881342
latruffe
Bdovore
Posté le 24-10-2004 à 15:40:11  profilanswer
 

Pareillement :jap:
 
Les dates sont pas toujours intuitives sous php :/
 


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
n°886241
latruffe
Bdovore
Posté le 29-10-2004 à 23:36:32  profilanswer
 

Voilà, d'un coté, c'est un up mais c'est surtout pour souligner que je suis bien content de trouver ce topic ce soir :bounce:


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
n°886265
ratibus
Posté le 30-10-2004 à 00:23:45  profilanswer
 

Par contre pour les dates en français y a beaucoup plus simple :  

Code :
  1. <?php
  2. setlocale(LC_TIME, "fr" );
  3. echo strftime("%A %e %B %Y" );
  4. ?>


Message édité par ratibus le 30-10-2004 à 00:23:58
n°889264
T509
$job-&gt;GetJob(now)
Posté le 03-11-2004 à 10:46:03  profilanswer
 

ratibus a écrit :

Par contre pour les dates en français y a beaucoup plus simple :  

Code :
  1. <?php
  2. setlocale(LC_TIME, "fr" );
  3. echo strftime("%A %e %B %Y" );
  4. ?>




 
Tout à fait, mais en hébergement mutualisé ou gratuit, setlocale() n'est pas toujours accessible ...
 
 
 
Edit : Orthographe


Message édité par T509 le 03-11-2004 à 19:44:10

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°889706
esox_ch
Posté le 03-11-2004 à 18:04:58  profilanswer
 

Je plussoie pour l'initiative, c'est clair que les dates sont un truc qui posent tj pas mal de problemes

n°889789
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 03-11-2004 à 20:14:49  profilanswer
 

[:blueflag]


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°1143721
T509
$job-&gt;GetJob(now)
Posté le 07-07-2005 à 22:28:34  profilanswer
 

Juste un petit up au cas où certains cherchent des infos ou pourraient proposer d'autres exemples

mood
Publicité
Posté le 07-07-2005 à 22:28:34  profilanswer
 

n°1145523
IvanleFou
Posté le 10-07-2005 à 15:13:32  profilanswer
 

Justement j'aurais une question. Voilà j'essais de convertir un nombre de secondes en un nombre de jours/heures/minutes/secondes mais j'ai toujous 1 jour de trop.
 
Par exemple:

Code :
  1. $Tps_sec = 60 * 60 * 3; // égal à 3h
  2. $Tps_jours = gmdate("d\j G\h i\m s\s", $Tps_sec);


 
Et ca m'affiche "01j 3h 00m 00s" au lieu de "00j 3h 00m 00s".
Cela dit le caractère "d" pour gmdate est compris entre 01 et 31 donc il risque pas de m'afficher 0.
 
Comment faire? isoler le jour et lui retrancher 1 :??:

n°1145589
T509
$job-&gt;GetJob(now)
Posté le 10-07-2005 à 17:01:16  profilanswer
 

Le problème est que gmdate travaille sur les dates et toi sur le temps. Ce qui n'est pas tout à fait la même chose.
 
La méthode est d'utiliser les décompositions successives par modulo comme je les utilise plus haut à la fin de mon code sur la mesure du temps

n°1145647
IvanleFou
Posté le 10-07-2005 à 18:47:17  profilanswer
 

Merci T509, j'ai utilisé la méthode des modulos et me donne le résultat que j'attendais :jap:

n°1148005
Frogyman
Giggity giggity goo
Posté le 12-07-2005 à 15:29:04  profilanswer
 

Bonjour, je cherche à connaitre la date des 4 prochains LUNDI a partir de la date courante (et donc variable)?
 
Une idée ?
 

n°1148195
IvanleFou
Posté le 12-07-2005 à 16:57:12  profilanswer
 

Perso je ferai comme ca:
 
- Récupération du numéro du jour de la semaine à partir du timestamp actuel et de la fonction gmdate.
- tu en déduis le nombre de jours qui te sépare du lundi suivant.
- tu calcules la date du lundi suivant avec "nb_jour_jusqu_au_prochain_lundi * 60 * 60 * 24".
- apres pour obtenir la date du lundi d'apres tu ajoutes a la date trouvée précédemment "60 * 60 * 24 * 7".
- de même pour le lundi encore après.... etc
 
 
Maintenant ya peut etre plus simple et plus rapide, suis pas un pro.

n°1148470
T509
$job-&gt;GetJob(now)
Posté le 12-07-2005 à 22:59:05  profilanswer
 

Si tu regardes avec attention le code que j'ai donné, c'est facile de s'inspirer puisque dans l'un des exemples, je me positionne sur le 1er lundi suivante la date du jour.
 

n°1148597
nickola
Posté le 13-07-2005 à 09:18:06  profilanswer
 

Il y a un utilisateur sur le forum de developpez.com qui a développé une classe date. Vous pouvez trouver çà ici http://www.developpez.net/forums/v [...] p?t=267535


Message édité par nickola le 13-07-2005 à 09:18:23
n°1197596
rufo
Pas me confondre avec Lycos!
Posté le 12-09-2005 à 14:34:13  profilanswer
 

sinon, pour éviter les calculs de dates (du genre, le jour qu'on était y 19 jours), y'a cette syntaxe de strtotime() très pratique :  

Code :
  1. echo strtotime("now" ), "\n";
  2. echo strtotime("10 September 2000" ), "\n";
  3. echo strtotime("+1 day" ), "\n";
  4. echo strtotime("+1 week" ), "\n";
  5. echo strtotime("+1 week 2 days 4 hours 2 seconds" ), "\n";
  6. echo strtotime("next Thursday" ), "\n";
  7. echo strtotime("last Monday" ), "\n";


source : http://fr3.php.net/manual/en/function.strtotime.php et http://www.gnu.org/software/tar/ma [...] tar_7.html
 
Sinon, j'ai trouvé encore plus fort (enfin, c'est mon avis perso) :

Code :
  1. date("01/m/Y", strtotime("4 Months ago" ))    // donne le 1er jour d'il y a 4 mois
  2. date("t/m/Y", strtotime("last Month" ))   // donne le dernier jour du mois précédent
  3. date("d/m/Y", strtotime("last monday", strtotime("last week +1 day" )))    // si je me souviens bien, ça donne la date du dernier lundi par rapport à l'autre date passée en paramètre, à savoir la date qu'on était la semaine dernière + 1 jour)


 

n°1197972
syl94
Ni!
Posté le 12-09-2005 à 23:45:54  profilanswer
 

excellent topic, je wiki-ize  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Débuter avec les dates et le temps [Tuto]

 

Sujets relatifs
Livre "Débuter avec Qt 3"tuto pour glut
comparaison de datesun soft d'emplois du temps
Cherche programmeur pour jeu de stratégie 3D temps réelAllonger le temps d'excution d'1 script
session qui se détruit après un certain tempsBesoin de conseil pr debuter sous oracle
Séléctionner des infos entre 2 dates connuesprobleme avec les dates :
Plus de sujets relatifs à : Débuter avec les dates et le temps [Tuto]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR