0

可能重复:
strtotime 在 mm-dd-yyyy hh:mm 上失败

我有一个如下所示的日期,但 DateTime 函数不允许它:

            $start = new DateTime('13/10/2012');
            echo $start->format("Y-m-d");

它允许所有其他方法,即使使用“2012 年 10 月 13 日”,但我无法更改它,因为这是我接收日期的格式。

有任何想法吗?

谢谢

4

3 回答 3

1

尝试 DateTime::createFromFormat 之类的

$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
于 2012-06-26T08:26:31.220 回答
1

您是否尝试过 createFromFormat() ?

$start = DateTime::createFromFormat('d/m/Y', '13/10/2012');
于 2012-06-26T08:26:58.700 回答
1

根据文档,它只接受特定格式的日期,其中之一是“美国月、日、年”,如果您提供 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");
于 2012-06-26T08:32:39.247 回答