我查看了this问题,但时间格式不同
我有以下日期格式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');
}
在没有任何警告的情况下工作,谢谢大家
答案 0 :(得分: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');
}
您可以使用它并在this demo中查看它。
答案 1 :(得分:2)
您可以比较两个DateTime对象。
$nowLessTenMinutes = new DateTime();
$nowLessTenMinutes->sub(new DateInterval('PT10M')); // Sub 10 minutes
if ($myTime >= $nowLessTenMinutes);
答案 2 :(得分: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' );
答案 3 :(得分:0)
我有同样的问题,如果你使用MAMP或类似的东西,更改php.ini尝试在你的php文件顶部添加date_default_timezone_set('America/New_York');
会很复杂。
然后,此线程上的大多数其他答案都应该有效。