0

Twitter APIを使用して、最近のツイートをXMLファイルから自分のWebサイトに取得しています。すでに自分のページにツイートが表示されていますが、ツイートが表示されてから何日経過したかを表示できません。

私はすでに同じ問題についてここで答えられたいくつかの解決策を試しましたが、それは私にとってはうまくいきませんでした。XMLファイルの日付と時刻は次のように表示されます。

<statuses type="array">
   <status>
      <created_at>Sat Mar 23 18:43:16 +0000 2013</created_at>
   </status>
</statuses>

私は次のようにデータを取得しています:

<?php
$xmldata = 'https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=AblazeDigital';
$open = fopen($xmldata, 'r');
$content = stream_get_contents($open);
fclose($open);
$xml = new SimpleXMLElement($content);
?>
<?php 
    echo $xml->status[0]->created_at;
?>

次の日付「SatMar2318:43:16 +0000 2013」を読み取り、現在までに何日経過したかを示すphpを使用して関数を作成するにはどうすればよいですか?

4

4 に答える 4

2

使用strtotime()して、現在のタイムスタンプと比較します。

$date = $xml->status[0]->created_at;
$difference = time() - strtotime($date);
$days = $difference/24/3600;
echo $days . " days"; // outputs something like "0.857615740741 days"

DEMOを参照してください。

于 2013-03-24T15:19:53.500 に答える
2
$now = new DateTime();
$postdate = DateTime::createFromFormat("D M d H:i:s P Y", "Sat Mar 23 18:43:16 +0000 2013");
$interval = $now->diff($postdate);
echo $interval->format('%d days');

実際に見てください

于 2013-03-24T15:20:38.193 に答える
2
$time = strtotime($xml->status[0]->created_at);
$days = (time() - $time) / 86400 //86400 = seconds of one day

strtotimeは任意の日付文字列をunixtimeに変換するため、現在の時刻からそれを引くと、ツイートからの秒数が得られます。それを日数に変換するには、86400で割るだけです。

于 2013-03-24T15:21:43.187 に答える
1
$now = new DateTime('NOW');
$pageTime = new DateTime('Sat Mar 23 18:43:16 +0000 2013');

$sub = $now->diff($pageTime);
$days = $sub->format('%d');

if ($days < 1) {
    echo 'Less than a day has passed';
}
elseif ($days == 1) {
    echo $days.' day has passed';
}
else {
    echo $days.' days have passed';
}
于 2013-03-24T15:21:47.660 に答える