如何在PHP中将此日期(dd / mm / yyyy)格式化为(j M Y)?

时间:2011-07-14 11:14:26

标签: php date

我正在尝试将此日期格式(在PHP中)转换为:“dd / mm / yyyy”,例如18/08/2011,转换为“j MY”,应该输出类似这样的内容,“2011年8月18日”

如果有人可以提供帮助,我们将不胜感激, 感谢。

4 个答案:

答案 0 :(得分:2)

如果您使用的是PHP> = 5.3,则可以尝试使用DateTime类。

<?php
  $dateString = '18/08/2011';
  $dt = DateTime::createFromFormat('d/m/Y', $dateString);

  echo date('d M Y', $dt->getTimestamp());
?>

答案 1 :(得分:1)

<?php 
   $str = "18/08/2011";
    preg_match("|(.*?)/(.*?)/(.*?)|", $str, $match);
    $str = $match[2]."/".$match[1]."/".$match[2];
    echo $your_format = date("j M Y", strtotime($str)); //strtotime() expects mm/dd/yyyy
    //returns 18 Aug 2008
?> 

http://sandbox.phpcode.eu/g/29439.php

答案 2 :(得分:0)

这是一种方式:

$oldDate = "18/08/2011";
$dateArr = explode("/", $oldDate);
$newDate = date("j M Y", mktime(0,0,0,$dateArr[1],$dateArr[0],$dateArr[2]));

应该按原样运作。请注意$dateArr中列出的mktime元素的顺序。

答案 3 :(得分:0)

strtotime()很好,但由于系统的日期配置,它会冒返回意外结果的风险。为了更加安全,我赞成使用查找数组。

<?php

function dateReformat( $date )
{
    $monthList = array
    (
        'January',
        'February',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'
    );

    $tmp = explode( '/', $date );
    $month = $monthList[ $tmp[1]-1 ];

    return "{$tmp[0]} {$month} {$tmp[2]}";
}

echo dateReformat( '12/05/1980' );