comparer des dates (YMD)

comparer des dates (YMD) - PHP - Programmation

Marsh Posté le 22-10-2010 à 15:25:34    

En réalité ce que j'ai c'est une date à ce format: 20101022  (ymd, date d'aujourd'hui), et d'autres dates au même format, je voudrais pouvoir checker si une date est plus ancienne de 7 jours ou pas (7 jours, ou 15 jours, peu importe) qu'une date donnée (la date du jour en fait).  Je sais pas si je suis bien clair? J'ai regardé les méthodes de date, mais j'avoue que je ne trouve pas mon bonheur  :??:

 

J'avais pensé à les convertir en unix timestamp, mais je vois pas comment faire...


Message édité par caribouuu le 22-10-2010 à 15:27:00

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 22-10-2010 à 15:25:34   

Reply

Marsh Posté le 22-10-2010 à 15:39:49    

ben tu splittes en 3 champs tes 2 dates avec substr() puis strtotime() pour la comparaison (avec un simple < ). L'idéal aurait été bien entendu d'avoir ta date sous la forme YYYY-mm-dd:/


Message édité par rufo le 22-10-2010 à 15:40:23

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-10-2010 à 15:41:47    

Tu peux le faire avec les timestamps, ou comme ça :

Code :
  1. $d = new DateTime();
  2. $d->modify('-7 day');
  3. if($d->format('Ymd') > $string_a_comparer)
  4.  // code

Reply

Marsh Posté le 22-10-2010 à 15:47:58    

J'ai fait ça (je choisis pas le format de la date en fait)
 

Code :
  1. $date = '20101022';
  2. $jour= substr($date, -2);
  3. $an= substr($date, 0, 4);
  4. $mois= substr($date, 4, 2);
  5. $timestamp=mktime(0,0,0,$mois,$jour,$an);


 
ça me renvoit ça comme timestamp: 1287698400
 
Par contre quand je fais une conversion inverse a cette adresse http://www.unixtimestamp.com/index.php  ça me renvoit le 21 et pas le 22. Enfin c'est pas bien grave.


---------------
Bla (blaa bbla)
Reply

Marsh Posté le 22-10-2010 à 16:02:18    

ligne 6 : essayes $timestamp = strtotime("$an-$mois-$jour" );
 
T'occupes pas de ce site, tu sais pas comment c'est coder. En plus, il est pas en France, donc décalage horaire, heure d'hivers/été, tout ça... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-10-2010 à 16:11:38    

Oui c'est vrai que c'est pas une référence.

 

J'ai testé strtotime ça rend exactement comme mktime, mais merci :jap:  Je pense que c'est bon, je pouvoir gérer plus finement mes délais avant suppression de fichiers comme ça.


Message édité par caribouuu le 22-10-2010 à 16:12:08

---------------
Bla (blaa bbla)
Reply

Marsh Posté le 22-10-2010 à 16:50:58    

caribouuu a écrit :

J'ai fait ça (je choisis pas le format de la date en fait)
 

Code :
  1. $date = '20101022';
  2. $jour= substr($date, -2);
  3. $an= substr($date, 0, 4);
  4. $mois= substr($date, 4, 2);
  5. $timestamp=mktime(0,0,0,$mois,$jour,$an);


 
ça me renvoit ça comme timestamp: 1287698400
 
Par contre quand je fais une conversion inverse a cette adresse http://www.unixtimestamp.com/index.php  ça me renvoit le 21 et pas le 22. Enfin c'est pas bien grave.


 
Tu peux vérifier simplement avec strftime à partir de ton timestamp, et du coup tu auras la valeur propre à ta configuration horaire :
 

Code :
  1. echo strftime("%d-%m-%Y", $timestamp);


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed