2011-10-12 69 views
9

$ row-> depositdateをdd-mm-yyyy形式で表示したいとします。PHP strtotimeは、dateカラムがNULLの1970年の日付を返します。

、データベース内の日付列が表示空の日付である場合は次のとおりです。1970年1月1日

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>"; 

日付はDD-MMでそれ以外の場合は、日付、それは何も表示されないはずのデータベースにnullの場合-yyyy形式が表示されます。それは整数のタイムスタンプを通過させたいので、予め

おかげ

サンディープ

+0

示すように、値がnullであり、それがあれば、あなたのために仕事をする 'date'機能を期待していないかどうかを確認するとワイルドカード記号 ですべてを選択するにはまず変更SQLクエリ - ディスプレイ空文字列でなければ、 'date'関数出力を表示します。 –

答えて

16

はNULLは、のstrtotimeによって0として解釈されます。タイムスタンプ0は1-1-1970を意味します。

$row->depositdate === NULLの場合は自分で確認する必要があります。その場合は、strtotimeをまったく呼び出さないでください。

+0

GolezTrolに感謝.... – Sandy505

6

NULLは0に変換されます - エポック(1970年1月1日)

は、以前であれば$行優先> depositdata is_nullを確認するか、後に0をチェックする必要がある代わりに

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>"; 
+0

それは完璧でした! –

0

これを行います$ row-> depositdataの値がstrtotimeに認識できない場合はstrtotimeを返します。タイムスタンプに相対

echo "<td align=center>"; 
    if (!is_null($row->depositdate)) 
    { 
    $jUnixDate = strtotime($row->depositdate)); 
    if ($jUnixDate > 0) 
    { 
      echo date('d-m-Y', $jUnixDate); 
    } 
    } 
    echo "</td>"; 

strtotimeを期待英語の日付形式を含む文字列を与えられるとUnix timestampにそのフォーマットを解析しようとします(1970年1月1日00:00:00からの秒数)、現在与えられていない場合は現在の時刻になります。

unixtimeとY2K38問題の詳細:http://en.wikipedia.org/wiki/Year_2038_problem

-1

ああ! これはなぜ起こるのですか? 単に「depositdate」 をSELECTクエリに含めませんでした。 ここ

$sql = "SELECT * FROM `yourtable`"; 
+0

「depositdate」がSELECTクエリに含まれていないことをどのように知っていますか?質問をよく読んで..... – Sandy505

関連する問題