Question

Je suis en train d'utiliser strtotime() pour répondre à un clic sur un bouton à l'avance -1 et +1 jours (deux boutons) par rapport à l'avancé d'une journée à la précédente cliquez sur.

Exemple:

  • C'est le 10 du mois, je clique sur "1 jour", et maintenant la date se lit comme le 9e.
  • Je clique sur le "1 jour" nouveau sur le bouton et maintenant, à la lecture des états de la 8e journée.
  • Je clique sur le "+1 jour" et maintenant, à la lecture des états, c'est le 9ème.

Je comprends les boutons et de l'affichage de la date et de l'aide $_GET et PHP pour passer l'info, mais comment puis-je obtenir strtotime() pour travailler sur la date de la dernière fois où le voyage dans le temps de script a été appelé?

Mon travail a jusqu'à présent, laissez-moi vous montrer hier et d'aujourd'hui par rapport à maintenant mais pas par rapport à, par exemple, l' la journée d'avant-hier, ou l' jour après-demain.Ou si j'utilise mon "lundi dernier" bouton, le jour d'avant ou d'après tout ce que ce jour est.

Était-ce utile?

La solution

Travail à partir des précédents appels à la même script n'est pas vraiment une bonne idée pour ce genre de chose.

Ce que vous voulez faire est de toujours passer deux valeurs de votre script, la date, et le mouvement.(l'exemple ci-dessous est simplifiée, de sorte que vous passer uniquement la date, et il sera toujours ajouter un jour à elle)

Exemple

http://www.site.com/addOneDay.php?date=1999-12-31

<?php
   echo Date("Y-m-d",(strtoTime($_GET[date])+86400));
?>

Veuillez noter que vous devez assurez-vous que la fonction isset($_GET[date]) avant ainsi

Si vous voulez vraiment travailler à partir des précédents appels à la même script, vous allez avoir à faire avec les sessions, donc merci de préciser si c'est le cas.

Autres conseils

Kevin, vous travailler à partir d'un solide fondement absolu (c'est à diredate / heure), pas un parent période de temps.Vous ensuite de les convertir à la relative périodes de temps.Ainsi, par exemple, par défaut, si vous étiez montrant un calendrier, vous souhaitez travailler à partir de la date d'aujourd'hui.

int strtotime  ( string $time  [, int $now  ] )

Vous pouvez le voir dans la définition de la fonction ici de la fonction strtotime, le deuxième argument est maintenant, c'est à direvous pouvez modifier la date à partir de laquelle il est relatif.

Cela pourrait être plus facile à l'écran grâce à une boucle rapide

Ce sera une boucle dans les 10 dernières jours à l'aide de "hier" en tant que premier argument.Nous utilisons ensuite la date de l'imprimer.

$time = time();

for ($i = 0; $i < 10; $i++) {
    $time = strtotime("yesterday", $time);
    print date("r", $time) . "\n";
}

Afin de passer le temps/date via l'URI de sorte que vous pouvez enregistrer la date relative.

Après un moment d'inspiration, la solution à ma question est devenu évident pour moi (je prenais mon vélo).Le " $maintenant partie de

strtottime( string $time {,int $now ]) 

doit être définie comme la date actuelle.Pas de "$time()-maintenant", mais "la date actuelle je suis préoccupé par / je suis à la recherche de mon journal.

c'est à dire:si je regarde le résumé de feuille de temps pour 8/10/2008, alors que c'est "maintenant", selon la fonction strtotime();hier, c'est le 8/09 et demain, c'est 8/11.Une fois que j'ai ramper jusqu'à un jour, le "maintenant" est 8/11, hier, c'est de 8/10, et demain, c'est 8/12.

Voici l'exemple de code:

<?php

//catch variable
$givendate=$_GET['given'];

//convert given date to unix timestamp
$date=strtotime($givendate);
echo "Date Set As...: ".date('m/d/Y',$date)."<br />";

//use given date to show day before
$yesterday=strtotime('-1 day',$date);
echo "Day Before: ".date('m/d/Y',$yesterday)."<br />";

//same for next day
$tomorrow=strtotime('+1 day',$date);
echo "Next Day: ".date('m/d/Y',$tomorrow)."<br />";
$lastmonday=strtotime('last monday, 1 week ago',$date);
echo "Last Moday: ".date('D m/d/Y',$lastmonday)."<br />";

//form
echo "<form method=\"get\" action=\"{$_SERVER['PHP_SELF']}\">";

//link to subtract a day
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$yesterday)."\"><< </a>";

//show current day
echo "<input type=\"text\" name=\"given\" value=\"$givendate\">";

//link to add a day
echo "<a href=\"newtimetravel.php?given=".date('m/d/Y',$tomorrow)."\"> >></a><br />";

//submit manually entered day
echo "<input type=\"submit\" name=\"changetime\" value=\"Set Current Date\">";

//close form
echo "<form><br />";
?>

En cliquant sur le "<<"et ">>" des avancées et des régressions de la journée en question

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top