2012-03-05 21 views
0

私の問題の答えを見つけようとしています。$ startの入力日が与えられた。しかし、時間のない日付フィールドを使って同じことが行われると、エラーが発生します。フィールド日付と現在の日付との間の日数をPHPを使って調べる方法

<?php 
    $start = new DateTime('2011-10-12'); 
    $today = new DateTime(); 
    $days = round(abs($today->format('U') - $start->format('U'))/(60*60*24)); 
    echo $days; 
    ?> 

それは、をエコー表示します。

しかし、私はを交換する場合は$ テーブルのフィールドなどでを開始:非オブジェクトのメンバ関数形式の呼び出し():

$start = $demurage2[DC_date]; 
    echo $start; 
    $today = new DateTime(); 
    $dcdate = round(abs($today->format('U') - $start->format('U'))/(60*60*24)); 
    echo $dcdate; 

エラー: 致命的なエラー私はたったの$を開始エコーしようとしている490

ライン上/home/tech17/public_html/svga/invoice-detail.php、それがテーブルから正しい日付を示しています。2012-01-17。

+1

2番目の例では、$ startの内容は何ですか?あなたはそれがDateTimeオブジェクトであることを期待していますが、それがMySQLから直接来たのであれば、おそらくYYYY-MM-DDの形式の文字列です。 – liquorvicar

+0

$ startエコーすると、テーブルから正しい日付の値を返します(2012-01-17、文字列かどうかはわかりません)。この場合、私は再び変換を試みるべきですか?私は最後に数日を取得する必要があります。 – user1114409

答えて

0

2番目の例では、$ startはDateTimeクラスのオブジェクトではないので、もちろん動作しません。日付はどのように保存されていますか?技術的にはこれはうまくいくかもしれませんが、この$ demurage2 ['DC_date']の値に大きく依存しています。

$start=new DateTime($demurage2['DC_date']); 
+0

こんにちはKristovaher、はい、これは、最初の例では、liquorvicarによって正当に言ったように、動作しています。みんなありがとう。 – user1114409

関連する問題