PHP中的日期格式

时间:2012-03-24 18:28:08

标签: php mysql

我在格式化从MySQL数据库收到的日期时遇到问题。我一直收到这个错误:

Notice: A non well formed numeric value encountered in C:\xampp\htdocs\index.php on line 23

这是我的代码:

    $news_query = $database->query("SELECT * FROM " . DB_NEWS . " ORDER BY 'date'");
    while($news_data = mysql_fetch_array($news_query,MYSQL_ASSOC)){
        $date = date("M d, Y - g:i:s A", $news_data['date']);
        echo "
        <DIV class = 'news_post'>
            <DIV class = 'news_title'>" . $news_data['title'] . "</DIV>
            <DIV class = 'news_info'>Posted on " . $date . " By " . $news_data["author"] . "</DIV>
            <DIV class = 'entry'>" . $news_data['entry'] . "</DIV>
        </DIV>";
    }

我已阅读PHP手册中的时间戳和日期函数,我似乎无法弄清楚我的问题是什么。

5 个答案:

答案 0 :(得分:3)

您是否在MySQL中使用日期时间格式?

试试这个:

<?php
    date("M d, Y - g:i:s A", strtotime( $news_data['date'] ) );
?>

答案 1 :(得分:2)

$news_data['date']中数据库的日期可能是日期的字符串表示形式。 date()函数采用格式字符串和可选的时间戳,这是一个整数。这就是你得到错误的原因。

答案 2 :(得分:1)

最有可能的是,strtotime()会将您的日期转换为date()所需的格式。

而不是:

$date = date("M d, Y - g:i:s A", $news_data['date'])

你想:

$date = date("M d, Y - g:i:s A", strtotime($news_data['date']))

答案 3 :(得分:0)

尝试此查询

$database->query("SELECT *,unix_timestamp(date) as date 
                  FROM ".DB_NEWS." ORDER BY date") 

答案 4 :(得分:0)

有两种可能性。 第一个是:在查询中使用UNIXTIMESTAMP sql函数,或者像之前说的那样使用strtotime。 第二个,我更喜欢使用DateTime PHP对象。

$date = new DateTime($datas['date']);
//if an error occurs because of the format use createFromFormat
$date = DateTime::createFromFormat('d-m-y',$datas['date']);//for exemple for dd-mm-YYYY format