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

时间:2013-12-13 19:29:19

标签: php date strtotime

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

有问题的一行:

$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']); 

引发以下错误:

Notice: A non well formed numeric value encountered

所以我改变转储以确保格式良好..

var_dump($_POST['nextAppointmentDate']);  

string(10) "12-16-2013"

php docs state表示时间戳不是字符串。但是当我这样做时:

date('Y-m-d', strtotime($_POST['nextAppointmentDate']));

然后var_dump结果,我明白了:

string(10) "1969-12-31"

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

谢谢!

1 个答案:

答案 0 :(得分:51)

来自strtotime()的文档:

  

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

在日期字符串中,您有12-16-201316不是有效月份,因此strtotime()会返回false

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

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