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