7

strtotime()ボタンのクリックに応答して、前のクリックで進んだ日から-1日と+1日(2つのボタン)進むよう に使用しようとしています。

例:

  • 月の10日です。「-1日」ボタンをクリックすると、日付が9日と表示されます。
  • もう一度「-1日」ボタンをクリックすると、8日目が表示されます。
  • 「+1日」ボタンをクリックすると、9日目と表示されます。

ボタンと日付の表示、およびPHPを使用した情報の受け渡しについては理解していますが、タイムトラベルスクリプトが最後に呼び出されたときからの相対的な日付で作業するには$_GETどうすればよいですか?strtotime()

これまでの私の仕事では、昨日と今日を現在と比較して表示できましたが、たとえば、昨日の前日明後日とは相対的ではありません。または、「先週の月曜日」ボタンを使用する場合は、その日の前日または翌日です。

4

3 に答える 3

6

同じスクリプトへの以前の呼び出しから作業することは、この種のことにはあまり良い考えではありません。

あなたがしたいことは、常にスクリプトに日付とムーブメントの 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]) も前に確認する必要があることに注意してください

以前の呼び出しから同じスクリプトを本当に処理したい場合は、セッションで実行する必要があるため、その場合は指定してください。

于 2008-09-22T04:02:03.170 に答える
1

ケビン、あなたは相対的な期間ではなく、堅実な絶対ベース(つまり、日付/時刻)で作業します。次に、相対的な期間に変換します。したがって、たとえば、デフォルトでは、カレンダーを表示している場合は、今日の日付から作業します。

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

ここのstrtotimeの関数定義でわかるように、2番目の引数は現在です。つまり、相対的な日付を変更できます。

これは、クイックループを介して表示する方が簡単な場合があります

これは、最初の引数として「昨日」を使用して、過去10日間をループします。次に、日付を使用して印刷します。

$time = time();

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

したがって、相対的な日付を保存できるように、URIを介して時刻/日付を渡します。

于 2008-08-12T11:23:28.733 に答える
0

一瞬のひらめきの後、私の質問に対する解決策が明らかになりました (私は自転車に乗っていました)。の「$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 />";
?>

「<<」と「>>」をクリックすると、その日が進み、戻ります

于 2008-08-14T17:37:54.790 に答える