2016-09-05 10 views
2

私は非常に奇妙な状況に陥っています。私はXMLのフィードを持っていると私は一度に1つのXML値を読み取るためにループを使用してデータベースにXMLフィードデータを格納しています。 xmlの日付の値は次のようになります。php:日付と条件の比較

<date>Friday, 02 Sep 2016 00:00:00</date> 

私は以下の日付を比較するコードを書いています。

$todays = date("Y-m-d"); 
$newdates = strtotime ('-4 day' , strtotime ($todays)) ; 
    echo $today = date ('Y-m-d' , $newdates); 

some code for xml feed 

$dates = $item[$i]->date; 
echo $newDate = date("Y-m-d", strtotime($dates)); 

if($today != $newDate) { 
       break; 
      } 

else{ 
Store in database 
} 

ここに出力があります。 2016-09-01 2016-09-02

xmlには9月1日のデータが多数あります。しかし、if条件と比較するとデータは返されません。 私は何を間違えているとアドバイスしていますか?あなたは

$dates = (string) $item[$i]->date; 

その値を取得するには、文字列にそのにSimpleXMLElementをキャストする必要が

+0

'のvar_dump($日付)何;ショー? –

+0

var_dump($ dates)がこれを返します。 (SimpleXMLElement)#9(0){}} – Ironic

答えて

1

は、私はあなたのコードが何しようとしている同じことを行う必要があり、コードのシンプルな作品を書きました。

$fourDaysAgo = new DateTime('-4 days'); 

// some code for xml feed 

$xmlDate = //(string) $item[$i]->date; 
$date = new DateTime($xmlDate); 

if($fourDaysAgo->format('Y-m-d') == $date->format('Y-m-d')) { 
    echo 'Store in database';  
} 

Demo

+0

私はそれを試みましたが、条件がまだ動作していない場合。私は同じ出力を得ているし、vardumpで私は日付を見ることができます。 – Ironic

+0

文字列(28) "2016年9月2日00:00:00" – Ironic

+0

var_dump($ newDate)は文字列(10) "2016-09-02" – Ironic

2

あなたのコードでこれを参照してください?

$ dates = $ item [$ i] - > date;

可変金額の日付を分解して「金曜日」を取り除き、「02 Sep 2016 00:00:00」の日付に集中できます。

$dates = $item[$i]->date; 
$dates = explode(",", $dates); 

そして

は$ NEWDATE =日付( "Y-M-D"、のstrtotime($日付))エコーを置き換えます。

と、

echo $newDate = date("Y-m-d", strtotime($dates[1])); 

これは良いことがあります。 それがあなたの目的のために働くかどうかお知らせください。

2

は、以下にあなたの元のコードを変更:

$todays = date("Y-m-d"); 
$newdates = strtotime ('-4 day' , strtotime ($todays)) ; 
    echo $today = date ('Y-m-d' , $newdates); 

// some code for xml feed 

$dates = $item[$i]->date; 
$dates = explode(",", $dates); 
echo $newDate = date("Y-m-d", strtotime($dates[1])); 

if($today != $newDate) { 
       break; 
      } 

else{ 
Store in database 
}