为什么strtotime()在以下场景中没有返回任何内容?

时间:2014-12-10 07:32:51

标签: php date timestamp strtotime

我有一个$ _POST数组数据字段,其中包含mm-dd-YYYY格式的日期,如下所示:

$_POST['submission_date'] => 12-15-2014 //I get this after I did print_r($_POST);

现在我尝试使用strtotime()代码,但它没有返回任何内容。为什么呢?

echo "Submission Date ".strtotime($_POST['submission_date']);

请帮帮我。

感谢。

3 个答案:

答案 0 :(得分:3)

  

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

     

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

<强> Reference

阅读文档是否如此困难?你可能花了更多的时间来输入你的问题...而错过了所有其他有趣的琐事

答案 1 :(得分:2)

如果发布的格式位于m-d-Y,则您无法使用strtotime()函数将其直接转换为unix时间戳,因为它will return false

如果您需要使用strtotime(),请change the input format to m/d/Y by simple str_replace()

另一方面,您可以使用DateTime class:

$dt = DateTime::createFromFormat('!m-d-Y', $submission_date);
echo $dt->format('Y-m-d'), " or ", $dt->getTimestamp();

demo

答案 2 :(得分:0)

回答更新

只需添加字符串替换

$dbDate = str_replace('-', '/', $_POST['submission_date']);

一切都会奏效。

您的日期格式为American month, day and year

并且需要/作为分隔符-

Working Demo based on your input.