質問
使おうとしています strtotime()
ボタンのクリックに応答して、前のクリックで進んだ日から -1 日および +1 日 (2 つのボタン) 進みます。
例:
- 今日は毎月 10 日なので、「-1 日」ボタンをクリックすると、日付が 9 日と表示されます。
- もう一度「-1 日」ボタンをクリックすると、8 日目と表示されます。
- 「+1 日」ボタンをクリックすると、9 日であることが読み上げられます。
ボタンと日付の表示と使い方を理解しました $_GET
と PHP を使用して情報を渡しますが、どうすれば取得できますか? strtotime()
タイムトラベルスクリプトが最後に呼び出されたときからの相対的な日付を処理するには?
これまでの私の仕事により、昨日と今日を相対的に示すことができました。 今 しかし、たとえば、 おととい, 、 または 明後日. 。または、私が私のものを使用する場合は、 "先週の月曜日" ボタンをクリックすると、その日の前後の日が表示されます。
解決
同じスクリプトに対する以前の呼び出しから作業することは、この種の場合にはあまり良い考えではありません。
やりたいことは、日付と動きという 2 つの値を常にスクリプトに渡すことです。(以下の例は、日付のみを渡すように簡略化されており、常に 1 日が追加されます)
例
http://www.site.com/addOneDay.php?date=1999-12-31
<?php
echo Date("Y-m-d",(strtoTime($_GET[date])+86400));
?>
isset($_GET[date]) も事前に確認する必要があることに注意してください。
同じスクリプトへの以前の呼び出しから実際に作業したい場合は、セッションを使用して実行する必要があるため、その場合は指定してください。
他のヒント
ケビン、あなたは確固たる絶対的な基盤に基づいて仕事をしています(つまり、相対的な期間ではなく、日付/時刻)。次に、相対的な期間に変換します。したがって、たとえば、デフォルトでは、カレンダーを表示している場合は、今日の日付から作業することになります。
int strtotime ( string $time [, int $now ] )
ここの strtotime の関数定義で、2 番目の引数が now であることがわかります。相対的な日付を変更できます。
これはクイックループで表示する方が簡単かもしれません
これは、最初の引数として「昨日」を使用して、過去 10 日間をループします。次に、日付を使用して出力します。
$time = time();
for ($i = 0; $i < 10; $i++) {
$time = strtotime("yesterday", $time);
print date("r", $time) . "\n";
}
したがって、相対的な日付を保存できるように、URI を介して時刻/日付を渡します。
一瞬のインスピレーションの後、私の質問に対する解決策が私に明らかになりました(私は自転車に乗っていたのです)。の「$now」部分
strtottime( string $time {,int $now ])
現在の日付として設定する必要があります。「$time()-now」ではなく、「私が関心がある/ログを調べている現在の日付。
つまり:2008 年 8 月 10 日のタイムシートの概要を見ている場合、strtotime() によれば、それは「現在」です。昨日は8/09、明日は8/11です。ある日忍び寄ると、「今」は8/11、昨日は8/10、明日は8/12です。
コード例は次のとおりです。
<?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 />";
?>
「<<」「>>」をクリックすると、その日が進み、戻ります。