2015-02-26 3 views
0

OK Я надеюсь, кто-то сможет увидеть, где я ошибаюсь.strtotime дает нечетный результат

$date = "2015-02-4"; 
$schedule = strtotime('+1 month',$date); 

по какой-то причине это дает мне 2680415 в результате вместо 1425488400, что я хочу, но если я

$date = "2015-02-4"; 
$schedule = strtotime($date); 

я получаю правильный ответ т.е. 1422982800.

$ дата на самом деле это не так, это результат запроса БД, добавленного к текущему месяцу и году.

+2

Посмотрите ['strtotime'] (http://www.php.net/strtotime) - вы видите второй параметр? Второй параметр - 'int $ now'. Целое число. '2015-02-4' не является целым числом. 'strtotime ($ date. '+1 month')' будет работать лучше. – h2ooooooo

ответ

2

Вы должны добавить выражение +1 MONTH к вашему $date при вызове strtotime вместо передачи их в виде отдельных параметров.

date_default_timezone_set('Asia/Bangkok'); 

$date  = "2015-02-4"; 
$schedule = strtotime($date); 
echo "Original timestamp: ", $schedule, PHP_EOL; 
echo "Original date:  ", date("Y-m-d", $schedule), PHP_EOL; 

$schedule = strtotime($date . ' +1 MONTH'); 
echo "+ 1 month timestamp: ", $schedule, PHP_EOL; 
echo "+ 1 month date:  ", date("Y-m-d", $schedule), PHP_EOL; 

Выход:

Original timestamp: 1422982800 
Original date:  2015-02-04 
+ 1 month timestamp: 1425402000 
+ 1 month date:  2015-03-04 
0

Как упоминалось ранее, strtotime принимает int в качестве второго параметра. Таким образом, строка должна быть преобразована в отметку времени перед обработкой:

$date = "2015-02-4"; 
$schedule = strtotime('+1 month', strtotime($date)); 

Или использовать конкатенацию, как показано на @ mhall отвечают.

Смежные вопросы