我有以下内容:
$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;
输出结果为:
before = 04-17-2013
after =
我以为我有那个工作,但一定是弄错了,因为它现在不起作用了!
使用解决方案更新
$date = DateTime::createFromFormat('m-d-Y', $order_date);
$new_date = $date->format('Y-m-d');
答案 0 :(得分:7)
$ new_date = date('Y-m-d',strtotime($ order_date));
这不起作用。 m/d/y
或d-m-y
格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。 (source)
$new_date = date_create_from_format('m-d-Y', $order_date);
或
$date = DateTime::createFromFormat('m-d-Y', $order_date);
$new_date = $date->format('Y-m-d');
或在PHP 5.5 +
中$new_date = (DateTime::createFromFormat('m-d-Y', $order_date))->format('Y-m-d');
答案 1 :(得分:2)
date('Y-m-d', strtotime($order_date));
答案 2 :(得分:1)
你可以做一个简单的explode():
$order_date = '04-17-2013';
list($m, $d, $y) = explode('-', $order_date);
$order_date = $y.'-'.$m.'-'.$d;
echo $order_date; // 2013-04-17
一个班轮?
$order_date = '04-17-2013';
$order_date = preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '$3-$1-$2', $order_date);
echo $order_date; // 2013-04-17