Переход по относительным датам с использованием strtotime ()

Я пытаюсь использовать, strtotime()чтобы ответить на нажатие кнопки, чтобы продвинуть -1 и +1 день (две кнопки) относительно дня, продвинутого на предыдущий щелчок.

Пример:

  • Это 10-е число месяца, я нажимаю кнопку «-1 день», и теперь дата читается как 9-е.
  • Я снова нажимаю кнопку «-1 день», и теперь показания показывают 8-й день.
  • Я нажимаю кнопку «+1 день», и теперь показания показывают, что это 9-е место.

Я понимаю кнопки и отображение даты и использование $_GETPHP для передачи информации, но как мне начать strtotime()работать с относительной датой с момента последнего вызова сценария путешествия во времени?

Моя работа позволила мне показать вчера и сегодня относительно настоящего, но не относительно, например, позавчера или послезавтра . Или если я использую свою кнопку «последний понедельник» , день до или после того, что этот день.

12.08.2008 11:14:27
3 ОТВЕТА
РЕШЕНИЕ

Работа с предыдущими вызовами одного и того же сценария не очень хорошая идея для такого рода вещей.

То, что вы хотите сделать, это всегда передавать два значения вашему сценарию, дату и движение. (приведенный ниже пример упрощен, так что вы пропускаете только дату и всегда добавляете к ней один день)

пример

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

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

Обратите внимание, что вы должны проверить, чтобы убедиться, что isset ($ _ GET [дата]) и раньше

Если вы действительно хотите работать с предыдущими вызовами одного и того же скрипта, вам придется делать это с сеансами, поэтому, пожалуйста, укажите, так ли это.

6
22.09.2008 04:02:03

Кевин, вы работаете на прочной абсолютной основе (т.е. дате / времени), а не на относительном периоде времени. Затем вы переводите в относительные периоды времени. Так, например, по умолчанию, если вы показывали календарь, вы работали бы с сегодняшней даты.

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, чтобы вы могли сохранить относительную дату.

1
12.08.2008 11:23:28

После минуты вдохновения решение моего вопроса стало для меня очевидным (я ехал на велосипеде). '$ Сейчас' часть

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

должен быть установлен в качестве текущей даты. Не "$ time () - сейчас", а "текущая дата, с которой я связан / я просматриваю свой журнал."

то есть: если я просматриваю сводку расписания на 10/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 />";
?>

Нажатие на «<<» и «>>» перемещает и отступает в день, о котором идет речь

0
7.02.2016 18:17:54