strtotime 给出奇怪的结果
strtotime giving odd result
好的,我希望有人能看到我哪里出错了。
$date = "2015-02-4";
$schedule = strtotime('+1 month',$date);
出于某种原因,这给了我 2680415 作为结果,而不是我想要的 1425488400,但如果我这样做了
$date = "2015-02-4";
$schedule = strtotime($date);
我得到了正确答案,即 1422982800。
$date 并不是这样分配的,它是数据库查询的结果添加到当前的月份和年份。
您应该在对 strtotime
的调用中将 +1 MONTH
表达式附加到 $date
,而不是将它们作为单独的参数传递。
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
如前所述,strtotime
接受 int
作为第二个参数。所以处理前要把字符串转成时间戳:
$date = "2015-02-4";
$schedule = strtotime('+1 month', strtotime($date));
或者使用 @mhall 的回答中所示的连接。
好的,我希望有人能看到我哪里出错了。
$date = "2015-02-4";
$schedule = strtotime('+1 month',$date);
出于某种原因,这给了我 2680415 作为结果,而不是我想要的 1425488400,但如果我这样做了
$date = "2015-02-4";
$schedule = strtotime($date);
我得到了正确答案,即 1422982800。
$date 并不是这样分配的,它是数据库查询的结果添加到当前的月份和年份。
您应该在对 strtotime
的调用中将 +1 MONTH
表达式附加到 $date
,而不是将它们作为单独的参数传递。
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
如前所述,strtotime
接受 int
作为第二个参数。所以处理前要把字符串转成时间戳:
$date = "2015-02-4";
$schedule = strtotime('+1 month', strtotime($date));
或者使用 @mhall 的回答中所示的连接。