2012-03-24 99 views
2

我在格式化從MySQL數據庫接收到的日期時遇到問題。我不斷收到此錯誤:PHP中的日期格式

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手冊和日期功能,我似乎無法找出我的問題是。

+1

哪一行是第23行?賠率是'$ news_data ['date']'不是你認爲的那樣。 – j08691 2012-03-24 18:30:49

+0

mysql表中'date'的數據類型是什麼? – safarov 2012-03-24 18:30:57

+0

第23行是這樣的:$ date = date(「M d,Y - g:i:s A」,$ news_data ['date']);該類型是使用CURRENT_TIMESTAMP的時間戳。 – legobear154 2012-03-24 18:31:40

回答

3

您是否在MySQL中使用日期時間格式?

試試這個:

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

謝謝!這工作!我必須等6分鐘才能將其標記爲答案。 – legobear154 2012-03-24 18:37:09

0

嘗試此查詢

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

$news_data['date']的數據庫中的日期可能是日期的字符串表示。 date()函數採用格式字符串和可選的時間戳,該時間戳是一個整數。這是你得到錯誤的原因。

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'])) 
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