在PHP中将'04 -17-2013'转换为'2013-04-17'的最佳方式?

Pet*_*now 2 php datetime date

我有以下内容:

$order_date = '04-17-2013';
echo $order_date . "\n";

$order_date = date_create($order_date);
$order_date = date_format($order_date, 'Y-m-d');

echo $order_date;
Run Code Online (Sandbox Code Playgroud)

输出是:

before = 04-17-2013
after  = 
Run Code Online (Sandbox Code Playgroud)

我以为我有那个工作但一定是弄错了,因为它现在不起作用了!

使用解决方案更新

$date = DateTime::createFromFormat('m-d-Y', $order_date);
$new_date = $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 7

$ new_date = date('Ym-d',strtotime($ order_date));

这不行.通过查看各个组件之间的分隔符来消除m/d/yd-m-y格式中的日期:如果分隔符是斜杠(/),则假设为美国m/d/y; 而如果分隔符是破折号( - )或点(.),则假定为欧洲dmy格式.(资源)

$new_date = date_create_from_format('m-d-Y', $order_date);
Run Code Online (Sandbox Code Playgroud)

要么

$date = DateTime::createFromFormat('m-d-Y', $order_date);
$new_date = $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

看到它在行动

或者在PHP 5.5+中

$new_date = (DateTime::createFromFormat('m-d-Y', $order_date))->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)