如何检查当前日期/时间是否超过设定的日期/时间?

时间:2010-05-14 07:21:56

标签: php date datetime

我正在尝试编写一个脚本,检查当前日期/时间是否超过05/15/2010 at 4PM

如何使用PHP的date()函数执行此检查?

6 个答案:

答案 0 :(得分:202)

由于PHP> = 5.2.0,您可以使用DateTime类:

if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
    # current time is greater than 2010-05-15 16:00:00
    # in other words, 2010-05-15 16:00:00 has passed
}

传递给DateTime constructor的字符串被解析为according to these rules


请注意,也可以使用timestrtotime函数。 See original answer

答案 1 :(得分:77)

还有DateTime类为比较运算符实现了一个函数。

// $now = new DateTime();
$dtA = new DateTime('05/14/2010 3:00PM');
$dtB = new DateTime('05/14/2010 4:00PM');

if ( $dtA > $dtB ) {
  echo 'dtA > dtB';
}
else {
  echo 'dtA <= dtB';
}

答案 2 :(得分:7)

dateTime对象范围从过去的约2920亿年到未来的相同。时间戳功能有一个限制(如果我没记错的话,从1970年到2038年开始)。

答案 3 :(得分:6)

检查PHP的strtotime - 函数,将您设置的日期/时间转换为时间戳:http://php.net/manual/en/function.strtotime.php

如果strtotime无法正确处理您的日期/时间格式(“下午4:00”可能会有效,但不会“在下午4点”),您需要使用字符串函数,例如substr解析/更正您的格式并通过其他功能检索您的时间戳,例如mktime

然后将得到的时间戳与当前日期/时间(if ($calulated_timestamp > time()) { /* date in the future */ })进行比较,以查看设定的日期/时间是过去还是将来。

我建议您阅读有关日期/时间函数的PHP-doc,并在遇到问题后再使用一些源代码返回此处。

答案 4 :(得分:1)

我对这个日期比较有问题,需要一些调整

for(i=0;i<3;i++){
    setTimeout(function() {
    search();
}, 5000);

答案 5 :(得分:0)

date_default_timezone_set('Asia/Kolkata');

$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
    echo "active";exit;
}else{
    echo "inactive";exit;
}