如何检查当前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。
请注意,它也可以使用time
和time
函数。 看原来的答案 。
还有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的strtotime
function将您设置的date/时间转换为时间戳: http : //php.net/manual/en/function.strtotime.php
如果strtotime
不能正确处理你的date/时间格式(“下午4:00”可能会工作,但不是“下午4点”),你需要使用string函数,例如substr
parsing/更正你的格式,并检索时间戳通过另一个函数,例如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; }