Opération sur les dates (+- 1 jour)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Opération sur les dates (+- 1 jour)

par savageman » 07 févr. 2009, 02:16

Sinon t'as l'autre technique :
    $day=$_GET['day']; 
    $month=$_GET['month']; 
    $year=$_GET['year']; 
     
    //jour précédent 
    $aujourdhui=mktime(0,0,0,$month,$day,$year);

    $hier = strtotime('-1 day', $aujourdhui);
    $demain = strtotime('+1 day', $aujourdhui);

par jojolapine » 07 févr. 2009, 00:40

Ok, mici mici ;)

par @rthur » 07 févr. 2009, 00:38

EDIT: Curieusement, ça fonctionne...? C'est mktime qui sait que le 32/11, c'est le 1/12 ?
Et oui! (c'est même le 1er exemple de la doc de mktime() ;) )

par jojolapine » 07 févr. 2009, 00:29

Euh, ben je sais pas , je me dit que si je fait -1 au 1er du moi, ça va faire des betises..., ou +1 au 31...
Donc j'ajoute des secondes sur un timestamp, ça me permet d'éviter ça...
C'est inutile?

EDIT: Curieusement, ça fonctionne...? C'est mktime qui sait que le 32/11, c'est le 1/12 ?

par @rthur » 07 févr. 2009, 00:22

Bonjour,

Je ne sais pas pourquoi ton code ne marche pas, en revanche, je ne vois pas pourquoi tu t'embètes avec des secondes :
//récupération des variables GET
    $day=$_GET['day'];
    $month=$_GET['month'];
    $year=$_GET['year'];
    
    //jour précédent
    $timestamp_hier=mktime(0,0,0,$month,$day-1,$year);
    print date("d-m-Y",$timestamp_hier);
    
    //jour suivant
    $timestamp_demain=mktime(0,0,0,$month,$day+1,$year);
    print date("d-m-Y",$timestamp_demain);

Opération sur les dates (+- 1 jour)

par jojolapine » 06 févr. 2009, 23:55

Bonsoir à tous,
J'essaye vainement depuis tout à l'heure de faire quelque chose de très simple me semble t'il...
Je souhaite transformer des variables que je reçois par l'url en une date du lendemain ou de la veille, voici la query string exemple:

Code : Tout sélectionner

?month=10&year=2008&day=26
Rien de bien compliqué n'est-ce pas?
alors j'ai fait ceci:
//récupération des variables GET
	$day=$_GET['day'];
	$month=$_GET['month'];
	$year=$_GET['year'];
	
	//transformation en timestamp
	$dsec=mktime(0,0,0,(int)$month,(int)$day,(int)$year);
	
	//jour précédent
	$pday=$dsec-86400;
	$pday=array('d'=>date("d",$pday),'m'=>date('m',$pday),'y'=>date('Y',$pday));
	
	//jour suivant
	$nday=$dsec+86400;
	$nday=array('d'=>date("d",$nday),'m'=>date('m',$nday),'y'=>date('Y',$nday));
	
	// Date en français
	$currentday=strftime("%A %d %B",$dsec);
En gros j'ajoute ou retire au timestamp correspondant à la date passée par l'url 86400, ce qui correspond au nombre de seondes dans un jour...
A priori ça devrait fonctionner... seulement, pour les paramètres ci-avant, ça ne fonctionne pas pour le jour suivant, on reste "bloqué" sur le 26/10... Alors que ça fonctionne sur d'autres mois, sur d'autres jours, etc...
Où est ma faute? quel est mon erreur de raisonnement? Bref merci à ceux et celle qui sauront m'aider! ;)