date()方法,"遇到的格式错误的数值"不希望格式化$ _POST中传递的日期

Pre*_*fix 22 php date strtotime

我很遗憾无法使用DateTime()此项目所在的服务器运行PHP v.5.2.

有问题的一行:

$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']); 
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

Notice: A non well formed numeric value encountered
Run Code Online (Sandbox Code Playgroud)

所以我var转储以确保它的格式良好..

var_dump($_POST['nextAppointmentDate']);  

string(10) "12-16-2013"
Run Code Online (Sandbox Code Playgroud)

PHP的文档说明,它需要一个时间戳不是一个字符串.但是当我这样做时:

date('Y-m-d', strtotime($_POST['nextAppointmentDate']));
Run Code Online (Sandbox Code Playgroud)

然后var_dump结果,我明白了:

string(10) "1969-12-31"
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用此日期值和strtotime()格式化日期?

谢谢!

Ama*_*ali 55

从以下文档strtotime():

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

在你的日期字符串中,你有12-16-2013.16不是有效月份,因此strtotime()返回false.

由于您不能使用DateTime类,您可以手动替换-with /using str_replace()以将日期字符串转换为strtotime()可理解的格式:

$date = '2-16-2013';
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16
Run Code Online (Sandbox Code Playgroud)