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

dav*_*ave 109 php datetime date

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

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

Sal*_*n A 212

由于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
}
Run Code Online (Sandbox Code Playgroud)

传递给DateTime构造函数的字符串将根据这些规则进行解析.


请注意,它也可以使用timestrtotime功能.见原始答案.

  • 时间戳有一些限制配对,也有一些错误,例如时间戳无法处理1970年之前和2038年之后的日期(参见Ivar Koster的回答) (5认同)

Vol*_*erK 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';
}
Run Code Online (Sandbox Code Playgroud)


小智 7

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


Sel*_*t0r 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文档,一旦你遇到问题,请回到这里查看一些源代码.