PHP,如何将格式为dd-mm-YYYY的字符串中的日期转换为格式为YYYY-mm-dd的字符串中的日期?

时间:2015-01-09 22:00:55

标签: php date datetime-format

我有一个字符串变量名$mydate,这意味着10 january 2014

$mydate="10-01-2014";

我想将它转换为字符串变量也是'2014-01-10'

半疯狂, 我已经提出了这样的解决方案:

foreach($report_data['summary'] as $key=>$row) {

        $substrdate=substr($row['payment_type'],-16); //i have see the result is 10-01-2014

        $originalDate = '10-01-2014';
        try {
          $date = DateTime::createFromFormat('d-m-Y', $originalDate);
          //echo $date->format('Y-m-d');
        } catch(Exception $e) {
          die("Error converting date. Exception caught: " . $e->getMessage());
        }



        $summary_data_row[] = array('data'=>'<span style="color:'.$color.'">'.$date->format('Y-m-d').'</span>', 'align'=>'right');
        $summary_data_row[] = array('data'=>'<span style="color:'.$color.'">'.$row['comment'].'</span>', 'align'=>'right');
   }//end of foreach

它运行良好,直到我将$ originalDate替换为具有相同值的$ substrdate - &gt; '10 -01-2014'为什么它不再起作用了?

2 个答案:

答案 0 :(得分:1)

使用DateTime读取日期并将其转换为新格式。

$date = DateTime::createFromFormat('j F Y', '10 january 2014');
echo $date->format('Y-m-d');

答案 1 :(得分:0)

使用PHP的DateTime对象,您可以使用方法createFromFormat

$date = DateTime::createFromFormat('m-d-Y', '10-01-2014');

然后你可以通过以下方式转换它:

echo $date->format('Y-m-d');

当然,您应该将其全部包含在try catch块中:

$originalDate = '10-01-2014';
try {
  $date = DateTime::createFromFormat('m-d-Y', $originalDate);
  echo $date->format('Y-m-d');
} catch(Exception $e) {
  die("Error converting date. Exception caught: " . $e->getMessage());
}