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

  FORUM HardWare.fr
  Programmation
  PHP

  Obtenir la date de la veille depuis une date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Obtenir la date de la veille depuis une date

n°2009946
vanquishV1​2
se coucher tard nuit
Posté le 19-07-2010 à 11:55:07  profilanswer
 

Bonjour,
 
Voila en fait c'est surement tout bête...
Je récupère une variable $_GET['date'] qui contient par exemple "2010-07-19" et je voudrais la transformer en le jour d'avant (ici 2010-07-18).
 
Savez vous comment faire ?
 
Merci

mood
Publicité
Posté le 19-07-2010 à 11:55:07  profilanswer
 

n°2009952
Pascal le ​nain
Posté le 19-07-2010 à 12:07:44  profilanswer
 

Essaye d'utiliser strtotime(), ca fonctionnera sans doute.
Tu récupères un timestamp en secondes.
Tu enlèves 24*3600 = 86400 secondes pour trouver le timestamp de la veille.
Tu converti le tout en date.
 

Code :
  1. $veille = date('Y-m-d',strtotime($date)-86400);


Message édité par Pascal le nain le 19-07-2010 à 12:07:56
n°2010117
rufo
Pas me confondre avec Lycos!
Posté le 19-07-2010 à 16:30:58  profilanswer
 

Alors attention, ça marche pas à tous les coups cette méthode, 2 jours dans l'année, quand on fait le changement d'horaire! Un coup le jour à une heure de plus, un coup, il en a une de moins. J'ai eu un bug de ce genre là dans mon soft Astres (cf ma signature) dans la partie stats, pour générer des périodes (dates) entre 2 dates (une période pouvant être un jour, une semaine, un mois, une année. Des fois, j'avais un décalage et je savais pas pourquoi, d'autant que c'était pas systématique. En cherchant, j'ai vu que c'était parce que mon algo était basé sur 1j = 86400 secondes.
Maintenant, j'utilise un truc du genre :

Code :
  1. $veille = date('Y-m-d', strtotime("1 day ago" ));


 
Y'a pas de surprise et en plus, c'est plu lisible question code ;)


Message édité par rufo le 19-07-2010 à 16:31:13

---------------
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
n°2010120
stealth35
Posté le 19-07-2010 à 16:39:00  profilanswer
 

oui avec les changements d'heures ca fausse tout ;)

n°2010136
Pascal le ​nain
Posté le 19-07-2010 à 17:23:54  profilanswer
 

A quel moment vient l'erreur ?

n°2010145
rufo
Pas me confondre avec Lycos!
Posté le 19-07-2010 à 17:45:18  profilanswer
 

Ben à cause des 2 jours où on change de date. Mettons qu'on soit le jour où on gagne 1h, avec ta méthode de -86400s, la veille va avoir la même date. Dans l'autre cas, on va pas avoir la date de la veille mais de l'avant veille.


---------------
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
n°2010153
stealth35
Posté le 19-07-2010 à 18:11:37  profilanswer
 

rufo a écrit :

Ben à cause des 2 jours où on change de date. Mettons qu'on soit le jour où on gagne 1h, avec ta méthode de -86400s, la veille va avoir la même date. Dans l'autre cas, on va pas avoir la date de la veille mais de l'avant veille.

 


je plussoie

 
Code :
  1. echo date('Y-m-d',strtotime('2010-03-29')-86400);
  2. /*
  3. 2010-03-27
  4. au lieu du
  5. 2010-03-28
  6. */


Message édité par stealth35 le 19-07-2010 à 18:12:35
n°2010173
Pascal le ​nain
Posté le 19-07-2010 à 20:20:10  profilanswer
 

La fonction date ne prend pas en charge les heures d'été/hiver ?

n°2010177
sircam
I Like Trains
Posté le 19-07-2010 à 20:41:30  profilanswer
 

Pascal le nain a écrit :

La fonction date ne prend pas en charge les heures d'été/hiver ?


C'est pas comme ça qu'il faut raisonner. Le problème, c'est qu'il n'y a pas toujours 24*60*60 ou 86400 secondes dans un jour. Si tu demandes d'ajouter 86400 secondes plutôt que 1 jour, tu arriveras le lendemain à la même heure... ou pas.
 

86400


Éviter ce genre de nombre magique et préférer quelque chose de plus explicite, tel que 24*60*60.
 

Spoiler :

Le premier qui vient dire que ça prend plus de cycles CPU...  [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°2010195
Pascal le ​nain
Posté le 19-07-2010 à 22:24:14  profilanswer
 

sircam a écrit :

]Le premier qui vient dire que ça prend plus de cycles CPU...  [:pingouino]


 
Mais ouais  [:pampers]

mood
Publicité
Posté le 19-07-2010 à 22:24:14  profilanswer
 

n°2010219
vanquishV1​2
se coucher tard nuit
Posté le 20-07-2010 à 08:13:57  profilanswer
 

Merci! Pour le one day ago ça marche et c'est nickel aussi avec "+1 day"

 

Par contre je suis embeté par ce que je ne peux plus calculer depuis une date.

 

Là je fais     $veille = date('Y-m-d',strtotime($date)-86400); ça me donne le jour avant ma date.
Or ça :       $veille = date('Y-m-d', strtotime("1 day ago" )); ça me donne hier


Message édité par vanquishV12 le 20-07-2010 à 08:21:27
n°2010235
rufo
Pas me confondre avec Lycos!
Posté le 20-07-2010 à 09:44:23  profilanswer
 

ben si, tu fais ça :

Code :
  1. $veille = date('Y-m-d', strtotime("1 day ago", strtotime($date)));


Faut lire un peu la doc de temps en temps!


---------------
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
n°2010242
Dj YeLL
$question = $to_be || !$to_be;
Posté le 20-07-2010 à 09:59:40  profilanswer
 

On peut pas écrire '-1 day' aussi ?


---------------
Gamertag: CoteBlack YeLL
n°2010248
vanquishV1​2
se coucher tard nuit
Posté le 20-07-2010 à 10:06:01  profilanswer
 

rufo, j'avais lu la doc mais j'avais inversé les deux arguments finaux... Merci.

n°2010251
Dj YeLL
$question = $to_be || !$to_be;
Posté le 20-07-2010 à 10:08:54  profilanswer
 

T'es pas obligé de te faire chier avec 2 strtotime :o
 
Tu fais juste :
 

Code :
  1. date('Y-m-d', strtotime('2010-07-19 - 1 day'))


---------------
Gamertag: CoteBlack YeLL
n°2010270
rufo
Pas me confondre avec Lycos!
Posté le 20-07-2010 à 10:20:11  profilanswer
 

Ah oui, je pensais pas que ça marchait ça (jamais testé non plu cela dit). Merci de l'info.


---------------
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
n°2010279
vanquishV1​2
se coucher tard nuit
Posté le 20-07-2010 à 10:27:41  profilanswer
 

rufo a écrit :

Faut lire un peu la doc de temps en temps!


 :D  [:lebauf]

n°2010340
rufo
Pas me confondre avec Lycos!
Posté le 20-07-2010 à 11:50:42  profilanswer
 

eh, faut pas déconner, la page m'a l'air bien récente : dernière maj, 09/07/2010 pour http://www.php.net/manual/fr/datetime.formats.php ! Je passe pas ma vie sur www.php.net non plu :/
pareil pour celle là : http://www.php.net/manual/fr/datet [...] mpound.php


---------------
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

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

  Obtenir la date de la veille depuis une date

 

Sujets relatifs
Fonction date Attachmate ExtraDifference de date erreur ORA-01722
Afficher date dans master pageObtenir chemin UNC d'un lecteur réseau
PHP & MySQL : date_format()Lister les fichiers par date de creation
Requetes classées par dateTri SQL par date
Prise en charge date complete script de réservationVBA Trier date min max d'une serie de données
Plus de sujets relatifs à : Obtenir la date de la veille depuis une date


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