Сделайте strtotime () генерировать время только в будущем - PullRequest
0 голосов
/ 24 декабря 2009

Я пытаюсь создать PHP-скрипт для поиска следующего вхождения даты (скажем, 5-1). Однако, если я добавлю это в strtotime() на 5-2, то получится дата этого года. Я просто хочу, чтобы это всегда возвращало следующую возможную дату. Как я могу сделать эту работу? Я использую codeigniter, если это поможет.

РЕДАКТИРОВАТЬ: Вот код, который я придумал, если какая-то скромная душа сталкивается с той же проблемой:

if (strtotime($date) < strtotime("now")) {
    $realseconds = strtotime($date) + 31556926; //add one year in seconds
} else {
    $realseconds = strtotime($date);
}

Ответы [ 4 ]

2 голосов
/ 24 декабря 2009

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

Вы также можете передать некоторую дату в следующем году в качестве второго параметра strtotime.

1 голос
/ 24 декабря 2009

Если предположить, что 5-2 означает пятое февраля, вы могли бы сделать

strtotime("february 5 +1 year")
1 голос
/ 24 декабря 2009

Что такое 5-1 или 5-2?!

Попробуйте сделать это вместо:

strtotime('next October');
0 голосов
/ 24 декабря 2009

код:

$x=strtotime($inputString);
$YEAR=60*60*24*30*12;
while($x<$time()) $x+=$YEAR;

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

...