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

我正在尝试编写一个脚本来检查当前的date/时间是否已经过了05年5月05/15/2010 at 4PM

我怎样才能使用PHP的date()函数来执行这个检查?

由于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 and thus in the past } 

传递给DateTime构造函数的string根据这些规则进行parsing。


请注意,它也可以使用timetime函数。 看原来的答案 。

还有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'; } 

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

检查PHP的strtotimefunction将您设置的date/时间转换为时间戳: http : //php.net/manual/en/function.strtotime.php

如果strtotime不能正确处理你的date/时间格式(“下午4:00”可能会工作,但不是“下午4点”),你需要使用string函数,例如substrparsing/更正你的格式,并检索时间戳通过另一个函数,例如mktime

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

我build议阅读关于date/时间函数的PHP文档,一旦遇到困难,请回到这里获取一些源代码。

这个date我有一个问题比较,需要一些调整

 function getDatetimeNow() { $tz_object = new DateTimeZone('Europe/Belgrade'); $datetime = new DateTime(); $datetime->setTimezone($tz_object); return $datetime->format('Y\-m\-d\ h:i:s'); } $currentDate = getDatetimeNow(); $dtA = new DateTime($currentDate); $dtB = new DateTime($date); if ( $dtA > $dtB ) { $active = 0; return $active; } else { $active = 1; return $active; }