PHP:strtotime返回“boolean”类型的“nothing”

时间:2013-10-03 16:56:44

标签: php strtotime

我有变量$EDate,我使用了strtotime函数,这个变量具有不同的值,结果如下:

$EDate = 10-21-2013;    echo "strtotime($EDate)";   the result = nothing    and the type is boolean
$EDate = 09-02-2013;    echo "strtotime($EDate)";   the result = 1360386000 and the type is integer
$EDate = 09-30-2013;    echo "strtotime($EDate)";   the result = nothing    and the type is boolean
$EDate = 09-30-2013;    echo "strtotime($EDate)";   the result = nothing    and the type is boolean
$EDate = 07-02-2014;    echo "strtotime($EDate)";   the result = 1391749200 and the type is integer
$EDate = 10-12-2014;    echo "strtotime($EDate)";   the result = 1418187600 and the type is integer

任何人都可以解释这个以及如何避免布尔结果吗?

2 个答案:

答案 0 :(得分:3)

修改:此答案不再适用于此问题,请参阅下面的评论。

将您的值放在引号中,以便它们成为字符串:

$EDate = '10-21-2013'; 
...

您当前的代码进行了数学减法:10 - 12 - 2013 = -2015。

答案 1 :(得分:3)

来自documentation

  

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是短划线( - )或点(。),则假定为欧洲d-m-y格式。

您的代码假定日期采用d-m-y格式,并且由于月份值不正确,将返回FALSE

var_dump(strtotime('10-21-2013')); // no month 21
var_dump(strtotime('09-30-2013'));
var_dump(strtotime('09-30-2013'));

如果您希望能够使用自定义格式,请改为使用DateTime::createFromFormat()

$date = DateTime::createFromFormat('m-d-Y', '10-21-2013');
echo $date->format('U');

Demo!