如何在PHP中重新格式化日期?

时间:2010-05-02 20:02:06

标签: php date

我从数据库中提取各种帖子的日期。日期采用以下格式:

2009-08-12

Numeric Year - Numeric Month - Numeric Day

如何将这些日期重新格式化为更加用户友好的日期:

August 12, 2009

Numeric Month Numeric Date, Numeric Year

假设从mysql数据库获取的日期存储在名为:

的变量中
$date = $row['date_selected'];

9 个答案:

答案 0 :(得分:56)

与基于strtotime的示例不同,这使您可以确保以正确的顺序解释月份和日期,而不管服务器上指定的区域设置如何。

$date = DateTime::createFromFormat('Y-m-d', '2009-08-12');
$output = $date->format('F j, Y');

答案 1 :(得分:49)

date("F d, Y", strtotime($input))

答案 2 :(得分:6)

$new_format = date("Your Date String", strtotime($date));

请参阅:
- http://php.net/strtotime
- http://php.net/date

基本上,如果strtotime()可以正确读取,您可以随意重新格式化。

在这种情况下,Year - Month - Day是正确识别的strtotime()格式,其他格式可能不是这种情况。

答案 3 :(得分:4)

您可以考虑使用select语句在MySQL中进行日期格式化:

DATE_FORMAT(date,'%M %e, %Y') as date_selected

http://www.w3schools.com/sql/func_date_format.asp

答案 4 :(得分:0)

<?php
echo date('F j, Y', strtotime($date));

答案 5 :(得分:0)

你可能想看一下php函数strtotime

http://php.net/manual/en/function.strtotime.php

它会将大量日期表示解析为Unix时间戳。

然后使用date函数。

答案 6 :(得分:0)

像这样使用它:
// 2005年2月1日 打印日期(“F j,Y”,mktime(0,0,0,14,1,2004));

答案 7 :(得分:0)

使用strtodate或explode将日期拆分为不同的组件,然后可以使用具有相应格式字符串的日期函数:http://php.net/manual/en/function.date.php

$date = "2009-08-12";
list($year,$month,$day) = explode("-",$date);
$formattedDate = date("F d, Y", mktime(0,0,0,$month,$day,$year));

产出:“2009年8月12日”

答案 8 :(得分:0)

<?php
//Date Formatter
/*
date: date you want to convert
format: its current format ie m-d-Y, m/d/Y, Y-m-d, Y/m/d
delimS: Current delimiter ie - or / or .
delimF: The delimiter you want for the result

NOTE: this will only convert m-d-Y to Y-m-d and back
*/
function dtform($date,$format,$delimS,$delimF){
    $dateFinal = '';
    if($format == 'm'.$delimS.'d'.$delimS.'Y'){
        $dateFinal_exp = explode($delimS,$date);
        $dateFinal = $dateFinal_exp[2].$delimF.$dateFinal_exp[0].$delimF.$dateFinal_exp[1];
    }else if($format == 'Y'.$delimS.'m'.$delimS.'d'){

        $dateFinal_exp = explode($delimS,$date);
        $dateFinal = $dateFinal_exp[1].$delimF.$dateFinal_exp[2].$delimF.$dateFinal_exp[0];
    }
    return $dateFinal;
}
?>