Frage

Ich versuche es zu verwenden strtotime() Um auf eine Schaltfläche zu reagieren, klicken Sie, um -1 und +1 Tage (zwei Schaltflächen) im Vergleich zu dem Tag vorzurücken, der beim vorherigen Klick angezeigt wurde.

Beispiel:

  • Es ist der 10. des Monats, ich klicke auf die Schaltfläche „-1 Tag“ und jetzt wird als Datum der 9. angezeigt.
  • Ich klicke erneut auf die Schaltfläche „-1 Tag“ und jetzt wird in der Anzeige der 8. Tag angezeigt.
  • Ich klicke auf die Schaltfläche „+1 Tag“ und jetzt wird angezeigt, dass es der 9. ist.

Ich verstehe die Tasten und die Anzeige des Datums und die Verwendung $_GET und PHP, um Informationen weiterzugeben, aber wie bekomme ich das hin? strtotime() am relativen Datum seit dem letzten Aufruf des Zeitreiseskripts arbeiten?

Meine bisherige Arbeit hat es mir ermöglicht, gestern und heute relativ zu zeigen Jetzt aber nicht relativ zum Beispiel vorgestern, oder der übermorgen.Oder wenn ich meine benutze "letzten Montag" Taste, am Tag vor oder nach dem, was auch immer dieser Tag ist.

War es hilfreich?

Lösung

Das Arbeiten mit früheren Aufrufen desselben Skripts ist für solche Dinge keine wirklich gute Idee.

Sie möchten Ihrem Skript immer zwei Werte übergeben: das Datum und die Bewegung.(Das folgende Beispiel ist vereinfacht, sodass Sie nur das Datum übergeben und es wird immer ein Tag hinzugefügt.)

Beispiel

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

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

Bitte beachten Sie, dass Sie auch vorher überprüfen sollten, ob isset($_GET[date]) vorhanden ist

Wenn Sie wirklich mit früheren Aufrufen desselben Skripts arbeiten möchten, müssen Sie dies mit Sitzungen tun. Geben Sie daher bitte an, ob dies der Fall ist.

Andere Tipps

Kevin, du arbeitest auf einer soliden absoluten Basis (d. h.ein Datum/eine Uhrzeit), kein relativer Zeitraum.Anschließend konvertieren Sie in die relativen Zeiträume.Wenn Sie beispielsweise einen Kalender anzeigen, arbeiten Sie standardmäßig mit dem heutigen Datum.

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

Sie können hier in der Funktionsdefinition von strtotime sehen, dass das zweite Argument jetzt ist, d. h.Sie können das Datum ändern, ab dem es relativ ist.

Dies lässt sich möglicherweise einfacher durch eine schnelle Schleife anzeigen

Dadurch werden die letzten 10 Tage durchlaufen, wobei „gestern“ als erstes Argument verwendet wird.Wir verwenden dann das Datum, um es auszudrucken.

$time = time();

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

Übergeben Sie also die Uhrzeit/das Datum über den URI, damit Sie das relative Datum speichern können.

Nach einem Moment der Inspiration wurde mir die Lösung meiner Frage klar (ich war mit dem Fahrrad unterwegs).Der „$now“-Teil von

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

muss als aktuelles Datum eingestellt werden.Nicht „$time()-now“, sondern „das aktuelle Datum, das mich beschäftigt / nach dem ich in meinem Protokoll suche.“

dh:Wenn ich mir die Zusammenfassung der Stundenzettel für den 10.08.2008 anschaue, dann ist das laut strtotime(); „jetzt“;Gestern ist der 09.08. und morgen ist der 11.08.Sobald ich eines Tages schleiche, ist „jetzt“ der 11.08., gestern ist der 10.08. und morgen ist der 12.08.

Hier ist das Codebeispiel:

<?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 />";
?>

Durch Klicken auf „<<“ und „>>“ wird der betreffende Tag vor- und zurückgeschaltet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top