2008-08-12 8 views
6

Ich versuche strtotime() zu verwenden, um auf einen Klick auf die Schaltfläche zu reagieren, um -1 und +1 Tage (zwei Schaltflächen) relativ zum vorherigen Tag zu erhöhen.Advancing durch relative Datumsangaben mithilfe von strtotime()

Beispiel:

  • Es ist der 10. des Monats, ich auf „-1 Tag“ -Taste, und jetzt das Datum lautet wie 9..
  • Ich klicke erneut auf den "-1 Tag" Knopf und nun zeigt der Auslesevorgang den 8. Tag an.
  • Ich klicke auf den "+1 Tag" Knopf und jetzt zeigt das Auslesen an, dass es der 9. ist.

Ich verstehe die Tasten und die Anzeige des Datums und $_GET und PHP mit Informationen zu übergeben, aber wie bekomme ich strtotime() die Zeitreise-Skript aufgerufen wurde auf die relative Datum der letzten Zeit zu arbeiten?

bisher Meine Arbeit hat mich aber nicht in Bezug auf zum Beispiel des Tag vor morgen gestern und heute in Bezug auf jetzt nach oder den Tag gestern zeigen lassen. Oder wenn ich meinen "letzten Montag" Knopf verwende, ist der Tag vor oder nach was auch immer dieser Tag ist.

Antwort

5

Arbeiten auf das gleiche Skript nicht ist wirklich eine gute Idee für diese Art von Sache.

Sie möchten immer zwei Werte an Ihr Skript, das Datum und die Bewegung übergeben. (Das folgende Beispiel wird so vereinfacht, dass Sie nur das Datum übergeben, und es wird immer einen Tag, um es hinzuzufügen)

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 darauf achten, überprüfen sollten dass isset ($ _ GET [date]) auch vorher

Wenn Sie wirklich von früheren Aufrufen zu demselben Skript arbeiten möchten, müssen Sie es mit Sitzungen tun, also bitte spezifizieren Sie, wenn das der Fall ist .

+0

gute Antwort, aber nicht die Anführungszeichen $ _GET ['date'] vergessen – Tech4Wilco

1

Kevin, Sie arbeiten eine solide absolute Basis (d. H. Ein Datum/Zeit), nicht eine relative Zeit. Sie konvertieren dann in die relativen Zeiträume. Wenn Sie also zum Beispiel standardmäßig einen Kalender anzeigen, arbeiten Sie nach dem heutigen Datum.

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

Sie in der Funktionsdefinition hier von strtotime sehen können, ist das zweite Argument jetzt, das heißt Sie das Datum ändern können, von dem sie relativ ist.

Dies könnte einfacher sein, durch eine schnelle Schleife „gestern“ als erstes Argument

Diese Schleife wird durch die letzten 10 Tage angezeigt werden soll. Wir verwenden dann Datum, um es auszudrucken.

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

0

Nach einem Moment der Inspiration wurde mir die Lösung meiner Frage klar (ich fuhr mein Fahrrad). Der '$ now' Teil von

muss als das aktuelle Datum festgelegt werden. Nicht "$ time() - now", sondern "das aktuelle Datum, um das ich mich kümmere/Ich sehe mein Logbuch an.

zB: wenn ich mir die Zusammenfassung des Arbeitszeittabellen für 8/10 2008, dann ist das "jetzt" laut strtotime(); gestern ist 8/09 und morgen ist 8/11. Sobald ich eines Tages schleiche, ist "jetzt" 8/11, gestern ist 8/10, und morgen ist 8/12.

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

einen Klick auf dem „< <“ und „>>“ Fortschritte und zieht den betreffenden Tag der letzten Anrufe