我很遗憾无法使用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()格式化日期?
谢谢!
答案 0 :(得分:51)
来自strtotime()
的文档:
通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是短划线( - )或点(。),则假定为欧洲d-m-y格式。
在日期字符串中,您有12-16-2013
。 16
不是有效月份,因此strtotime()
会返回false
。
由于您无法使用DateTime类,您可以使用str_replace()
手动将-
替换为/
,以将日期字符串转换为strtotime()
理解的格式:
$date = '2-16-2013';
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16