2016-05-10 6 views
-3

こんにちは私は2つの日付の間の日を取得しようとしています。 これは私のコーディングです:2日間から日を取得する方法

<?php 
    $Cur_date = date("Y-m-d"); 
    $Warranty = intval($row_Recordset1['Hardware_warranty']); 
    $timestamp = strtotime($row_Recordset1['Pur_date']); 
    $newtimestamp = strtotime("+".$Warranty." years", $timestamp); 
    $newtimestamp = date('Y/m/d', $newtimestamp) ; 



    if($Cur_date< $newtimestamp) 
    { 
     $interval = $Cur_date->diff($newtimestamp); 
     echo "Valid"."\n\n\n".$interval->y . " years, " . $interval->m." months, ".$interval->d." days "." left"; 
    } 
    else if ($Cur_date > $newtimestamp) 
    { 
     echo "Expired" ; 
    } 
    ?> 

が、エラーが出てきた:

Fatal error: Call to a member function diff() on string in C:\xampp\htdocs\Warranty\WarrantyStatus.php on line 155

私は別のを持ってるあなたに

ないHow to calculate the difference between two dates using PHP?

の重複に感謝助けてくださいここでの問題は、事前に宣言する必要がありますか?

答えて

2

あなたの$ Cur_date変数はDateTimeクラスのインスタンスではなく、標準の文字列なので、diff()メソッドは含まれていません。

はに宣言を変更してみてください:

$Cur_date = new DateTime("Y-m-d"); 

また、$ newtimestampに差分()メソッドを使用するために、あなたもDateTimeオブジェクトに$のnewtimestampを変換する必要があります。 "now"以外の日付と時刻を使用するには、DateTime :: createFromFormat()静的メソッドを使用する必要があります。あなたのケースでは

が、それはこのようなものになります。この時点で

$Warranty = intval($row_Recordset1['Hardware_warranty']); 
$timestamp = strtotime($row_Recordset1['Pur_date']); 
$newtimestamp = strtotime("+".$Warranty." years", $timestamp); 
$newtimestamp = DateTime::createFromFormat('Y/m/d', $newtimestamp); 

を、次の2つのDateTimeオブジェクトを比較し、あなたが意図したとおりに差分()メソッドを使用することができるはずです。 diff()メソッドを使用しているので、 "d"の代わりに結果の$ intervalの "days"プロパティを使用することもできます。それはあなた次第です。

も参照してください:
http://php.net/manual/en/datetime.diff.php
http://php.net/manual/en/datetime.createfromformat.php

+0

大丈夫TYそんなに先生 –

+0

をこの解決策で問題が解決した場合は、公式の答えとしてマーク親切にすることができれば、それは素晴らしいことです。ありがとう。 – badandyomega

関連する問題