1

私はこの質問を見ましたが、時間形式が異なります

変数に次の日付形式Tue, 11 Sep 2012 17:38:09 GMT があります$pubDate

$pubDate 現在の日時と比較してTue, 11 Sep 2012 17:38:09 GMT、過去10分以内かどうかを確認したいと思います

編集:

私が試してみました

//get current time
                strtotime($pubDate);
                time() - strtotime($pubDate);
                if((time()-(60*10)) < strtotime($pubDate)){
                    //if true increase badge by one
                    $badge = $badge + 1;
                }

警告が表示されます。システムのタイムゾーン設定に依存することは安全ではありません。date.timezone設定またはdate_default_timezone_set()関数を使用する必要があります。これらの方法のいずれかを使用してもこの警告が表示される場合は、タイムゾーン識別子のスペルを間違えている可能性があります。26行目の/Users/xxxxx/Desktop/xxxx/xxxx/xxxx.phpで、代わりに「EDT / -4.0/DST」に「America/New_York」を選択しました。

編集:

date_default_timezone_set('America/New_York');PHPに行を追加しました。

$inDate  = DateTime::createFromFormat( $format, $pubDate);
    $postDate = new DateTime();

    $diff = $inDate->diff( $postDate);

    // If the total number of days is > 0, or the number of hours > 0, or the number of minutes > 10, then its an invalid timestamp.
    if( $diff->format( '%a') > 0 || $diff->format( '%h') > 0 || $diff->format( '%i') > 10) {
     die( 'The timestamps differ by more than 10 minutes');
    }

警告なしに動作します、みんなありがとう

4

4 に答える 4

2

DateTime比較を行うために使用します。

$format = 'D, d M Y H:i:s O';
$tz = new DateTimeZone( 'America/New_York');

// Create two date objects from the time strings
$pubDate  = DateTime::createFromFormat( $format, 'Tue, 11 Sep 2012 17:38:09 GMT', $tz);
$postDate = DateTime::createFromFormat( $format, 'Tue, 11 Sep 2012 17:38:09 GMT', $tz);

// Compute the difference between the two timestamps
$diff = $pubDate->diff( $postDate);

// If the total number of days is > 0, or the number of hours > 0, or the number of minutes > 10, then its an invalid timestamp.
if( $diff->format( '%a') > 0 || $diff->format( '%h') > 0 || $diff->format( '%i') > 10) {
    die( 'The timestamps differ by more than 10 minutes');
}

あなたはそれで遊んで、このデモでそれが機能するのを見ることができます。

于 2012-09-13T13:44:20.977 に答える
2

2つのDateTimeオブジェクトを比較できます。

$nowLessTenMinutes = new DateTime();
$nowLessTenMinutes->sub(new DateInterval('PT10M')); // Sub 10 minutes

if ($myTime >= $nowLessTenMinutes);
于 2012-09-13T13:47:56.887 に答える
1

DateTime :: diff()を使用して、差を計算します。

$input = new DateTime( 'Tue, 11 Sep 2012 17:38:09 GMT' );
$now = new DateTime();

/* calculate differences */
$diff = $input->diff( $now );

echo $diff->format( '%H:%I:%S' );
于 2012-09-13T13:46:26.083 に答える
0

私は同じ問題を抱えていました。MAMPまたは同様のものを使用している場合、php.iniを変更しdate_default_timezone_set('America/New_York');てphpファイルの上に追加しようとすると複雑になります。

そうすれば、このスレッドの他のほとんどの回答が機能するはずです。

于 2012-09-13T14:47:40.693 に答える