2012-03-24 23 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

+0

mysqlテーブルの 'date'のデータ型は何ですか? – safarov

+0

行23は次のとおりです。$ date = date( "M d、Y - g:i:s A"、$ news_data ['date']);タイプは、CURRENT_TIMESTAMPを使用するタイムスタンプです。 – legobear154

答えて

3

MySQLでdatetime形式を使用していますか?

はこれを試してみてください:

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

ありがとうございました!それはうまくいった!私は答えとしてそれをマークするために6分待たなければならない。 – legobear154

0

$news_data['date']内のデータベースからの日付は、おそらく、日付の文字列表現です。

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

この文字列で検索してください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です。 私が好む第2の方法は、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