我的日期如下所示,但DateTime功能不允许:
$start = new DateTime('13/10/2012');
echo $start->format("Y-m-d");
它允许所有其他方法,甚至使用'10 / 13/2012',但我无法更改它,因为这是我收到日期的格式。
有什么想法吗?
由于
答案 0 :(得分:1)
尝试DateTime :: createFromFormat like
$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
答案 1 :(得分:1)
您是否尝试过createFromFormat()?
$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
答案 2 :(得分:1)
根据文件,它只接受特定格式的日期,其中一个是“美国月,日,年”,如果你提供13个月,这显然会失败。
我总是尽量避免使用模糊格式的日期。主要在代码中使用“2012-10-13”,并在面向用户的日期使用“2012年10月13日”。两者都可以通过我有经验的任何日期格式化API可靠地解析。
但是当被迫使用模糊格式时,我手动解析它而不依赖于PHP的内置API,因为我完全理解它将要做什么。例如:
list($day, $month, $year) = preg_split('/[^0-9]+/', '13/10/2012');
$start = new DateTime("$year-$month-$day");