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 对象。

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

if ($myTime >= $nowLessTenMinutes);
于 2012-09-13T13:47:56.887 回答
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 回答
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 回答