2008-08-12 8 views
6

私はstrtotime()を使用してボタンクリックに応答して、前のクリックに進んだ日を基準に-1日と+1日(2つのボタン)を進めようとしています。strtotime()を使用して相対日付を進める

例:

  • それは「-1日」私はをクリックし、ボタンの月の10日だし、今日は9日として読み込みます。
  • 「-1日」ボタンをもう一度クリックすると、ここでは8日目が読み上げられます。
  • 「+1日」ボタンをクリックすると、現在は9日目と表示されます。

私はボタンや情報を渡すために$_GETとPHPを使用して日付を表示する、との理解が、どのようにタイムトラベルスクリプトと呼ばれていた私はstrtotime()前回からの相対日付で動作するように入手できますか?

私の仕事は、これまでのところ、私はではなく、例えば、日昨日、または明日後日前に相対に昨日と今日の相対を示してみましょう持っています。または、私が「最後の月曜日」ボタンを使用している場合、その日の前後の日です。

答えて

5

で日が同じスクリプトへの以前の呼び出しから作業リトリートではありませんこのタイプのものには本当に良いアイデアです。

あなたがしたいことは、常にスクリプトに2つの値、日付、および動きを渡すことです。

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

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

あなたが確認するためにチェックすべきことに注意してください(以下の例は、日付のみを通過するように簡略化され、そしてそれは常にそこに一日が追加されます)それ以前にもisset($ _ GET [date])してください。

以前の同じスクリプトの呼び出しから作業したい場合は、セッションで行う必要があります。 。

+0

良い答えですが、引用符を忘れないでください$ _GET ['date'] – Tech4Wilco

1

ケビンでは、相対的な時間ではなく、絶対的な絶対ベース(つまり日付/時間)を使います。その後、相対的な期間に変換します。たとえば、デフォルトでカレンダーを表示していた場合は、今日の日付から作業します。あなたがここでのstrtotimeの関数定義で見ることができます

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

は、第二引数は、あなたが、それは相対的だ、そこから日付を変更することができ、すなわち、今です。

これは最初の引数として「昨日」を使用して、最後の10日間を通じて迅速なループ

この意志ループを介して表示する方が簡単かもしれません。その後、日付を使用して印刷します。

$time = time(); 

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

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

0

瞬間が訪れた後、私の質問に対する解決策が明らかになりました(私は自転車に乗っていました)。

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

の現在の$部分を現在の日付として設定する必要があります。

ie:もし私が8/10/10のタイムシートの要約を見ていれば、「$ time() - now」ではなく「現在の私の日付/ 2008年、それはstrtotime()によると "now"となり、昨日は8/09、明日は8/11となっています。 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 />"; 
?> 

は「< <」をクリックし、「>>」の進歩と問題

関連する問題