PHP - 无论时区如何,都将日期与字符串进行比较

时间:2014-12-23 00:49:12

标签: php date date-math

我将卡片过期信息传递给我:

$date = '2014-12-22';
$hour = '19';
$minute = '30';

我需要弄清楚是否可以根据门位置的当前日期和时间授予访问权限,每个日期和时间都在不同的时区。检查此脚本的脚本每小时生成一次,并分发给访问服务器,如果门的当地时间在到期时间之前需要推断出来(整个设计相当复杂且设计得很差)。

我需要将贝尔$ door_datetime与卡片到期信息(日期,小时,分钟)进行比较

$door_datetime = new DateTime;
$door_datetime->setTimezone(new DateTimeZone($door_timezone));

一个额外的问题是数据库数据没有被主动清理,并且有数百万的卡有效期,小时,分钟与$ door_datetime进行比较;正如您可以想象的那样,在繁忙的时间,随着服务器速度变慢,这成为一个问题。

有关如何有效查明$ door_datetime是否在$ date,$ hour,$ time之前或之后的任何想法?

1 个答案:

答案 0 :(得分:1)

DateTime对象具有可比性,因此应该如下:

$now = new DateTime(null, new DateTimeZone($door_timezone));
$card_expires = new DateTime(sprintf('%s %s:%s:00', $date, $hour, $minute), new DateTimeZone($door_timezone));
if ($card_expires <  $now) {
    // expired
}
相关问题