我正在尝试使用 strtotime() 要响应按钮,请单击相对于前一次单击的日期提前 -1 和 +1 天(两个按钮)。

例子:

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

我了解按钮、显示日期和使用 $_GET 和 PHP 来传递信息,但我如何获得 strtotime() 处理上次调用时间旅行脚本的相对日期?

到目前为止,我的工作让我展示了昨天和今天的相对情况 现在 但与例如 前天, , 或者 后天. 。或者如果我用我的 “上周一” 按钮,无论那天是什么日子的前一天或后一天。

有帮助吗?

解决方案

对于此类事情来说,从以前的调用到同一脚本并不是一个好主意。

您想要做的始终是将两个值传递给脚本:日期和运动。(下面的示例经过简化,因此您只传递日期,并且它总是会添加一天)

例子

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 的函数定义中看到,第二个参数是 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”,而是“我关心的当前日期/我正在查看我的日志”。

IE:如果我正在查看 8/10/2008 的时间表摘要,那么根据 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 />";
?>

单击“<<”和“>>”前进和后退相关日期

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top