strtotime给出奇怪的结果

时间:2015-02-26 05:34:10

标签: php strtotime

好的,我希望有人能看到我出错的地方。

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

出于某种原因,这给了我2680415作为结果,而不是我想要的1425488400,但如果我这样做

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

我得到了正确答案,即1422982800.

$ date实际上没有这样分配,它是数据库查询添加到当前月份和年份的结果。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如前所述,strtotime接受int作为第二个参数。因此,字符串应在处理之前转换为时间戳:

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

或者使用@ mhall的回答中显示的连接。