PHP strtotime奇怪的行为

时间:2013-10-13 14:33:47

标签: php date datetime strtotime

这段代码工作正常,直到昨天:

$fechaactual = strtotime('now');

$timestamp = strtotime($v->startDate);

$pelo = date("d/m G:i:s",$fechaactual);
$pelo2 = date("m/d G:i:s",$timestamp);

$timestamp = strtotime($pelo2);
$timestamp2 = strtotime($pelo);

现在,$ timestamp2始终为空。我不明白。为什么呢?

2 个答案:

答案 0 :(得分:1)

您尝试多次使用strtotime()

可以使用以下代码重现该问题:

$fechaactual = strtotime('now');
$pelo = date("d/m G:i:s",$fechaactual);
$timestamp2 = strtotime($pelo);
var_dump($timestamp2);

输出:

bool(false)

$fechaactual将包含当前时间的时间戳,并且通过使用date(),您将时间戳转换为可读格式。稍后,您尝试在新日期字符串上使用strtotime(),但strtotime()无法理解该格式并返回FALSE

strtotime()了解此页面中列出的格式:http://php.net/manual/en/datetime.formats.date.php

如果要使用自定义格式解析日期字符串,最好使用DateTime::createFromFormat()代替:

答案 1 :(得分:0)

关于这一点并非100%,但它直到昨天才有效,这可能意味着它的格式化问题。

今天是13/10/2013英国格式。 在美国,这相当于第13个月的第10天,这不是一个有效的日期...昨天将等同于第12个月的第10天,这将是一个有效的日期,虽然不是你期望的日期。