我有以下内容:
$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');
最佳答案
$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');
关于php - 在 PHP 中将 '04-17-2013' 转换为 '2013-04-17' 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16049462/