好的,我希望有人能看到我出错的地方。
$date = "2015-02-4";
$schedule = strtotime('+1 month',$date);
出于某种原因,这给了我2680415作为结果,而不是我想要的1425488400,但如果我这样做
$date = "2015-02-4";
$schedule = strtotime($date);
我得到了正确答案,即1422982800.
$ date实际上没有这样分配,它是数据库查询添加到当前月份和年份的结果。
答案 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的回答中显示的连接。