7

我试图用来strtotime()响应按钮单击以相对于上一次单击前进的日期提前 -1 天和 +1 天(两个按钮)。

例子:

  • 现在是10号,我点击“-1天”按钮,现在日期显示为9号。
  • 我再次单击“-1 天”按钮,现在读数显示第 8 天。
  • 我单击“+1 天”按钮,现在读数显示它是第 9 天。

我了解按钮和显示日期以及使用$_GETPHP 来传递信息,但是如何strtotime()从上次调用时间旅行脚本的相对日期开始工作?

到目前为止,我的工作让我展示了相对于现在的昨天和今天,而不是相对于例如前天后天。或者,如果我使用我的“上周一”按钮,那么无论那一天是前一天还是后一天。

4

3 回答 3

6

从以前的调用到相同的脚本工作对于这种类型的事情来说并不是一个好主意。

您想要做的是始终将两个值传递给您的脚本,日期和运动。(下面的例子被简化了,所以你只传递日期,它总是会增加一天)

例子

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的函数定义中看到,第二个参数是现在,即您可以更改它的相对日期。

这可能更容易通过快速循环显示

这将使用“昨天”作为第一个参数循环过去 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 回答