Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查当前日期/时间是否超过设定的日期/时间?_Php_Date_Datetime - Fatal编程技术网

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

Php 如何检查当前日期/时间是否超过设定的日期/时间?,php,date,datetime,Php,Date,Datetime,我正在尝试编写一个脚本来检查当前日期/时间是否超过了2010年5月15日下午4点的时间 如何使用PHP的date()函数执行此检查 检查PHP的strotime-函数以将设置的日期/时间转换为时间戳: 如果strotime无法正确处理日期/时间格式(“4:00PM”可能有效,但“4PM”无效),则需要使用字符串函数,例如substr来解析/更正格式,并通过另一个函数(例如mktime)检索时间戳 然后将生成的时间戳与当前日期/时间(if($calulated_timestamp>time()){

我正在尝试编写一个脚本来检查当前日期/时间是否超过了2010年5月15日下午4点的时间


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

检查PHP的
strotime
-函数以将设置的日期/时间转换为时间戳:

如果
strotime
无法正确处理日期/时间格式(“4:00PM”可能有效,但“4PM”无效),则需要使用字符串函数,例如
substr
来解析/更正格式,并通过另一个函数(例如
mktime
)检索时间戳

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


我建议您阅读PHP文档中的日期/时间函数,一旦遇到问题,请带着一些源代码回到这里。

由于PHP>=5.2.2,您可以这样使用该类:

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
}
将解析传递给的字符串


请注意,也可以使用
time
strotime
功能

还有一个类,它实现了一个用于比较运算符的函数

// $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';
}
/$now=new DateTime();
$dtA=新日期时间('05/14/2010 3:00PM');
$dtB=新日期时间('05/14/2010 4:00PM');
如果($dtA>$dtB){
回波‘dtA>dtB’;
}
否则{
echo“dtA
date\u default\u timezone\u set”(“亚洲/加尔各答”);
$curDateTime=日期(“Y-m-d H:i:s”);
$myDate=日期(“Y-m-d H:i:s”,标准时间(“2018-06-26 16:15:33”);
如果($myDate<$curDateTime){
回声“活动”;退出;
}否则{
回声“不活动”;退出;
}

时间戳有一些限制,也有一些错误,例如时间戳不能处理1970年之前和2038年之后的日期(参见Ivar Koster的回答)。我们经常看到没有参数的new DateTime()被滥用,如果您使用UTC日期(如您所应),则更喜欢使用new DateTime(“现在”,new DateTimeZone(“UTC”))。这将防止您的应用程序在日期中出现错误。我建议您将其存储在函数静态变量、类静态变量或运行过程中的其他位置…如果我们已经有了一个DateTime对象,并且我们想知道这是否已经过去,因为我们无法按照您的建议将对象传递给DateTime构造函数呢?我们是否应该使用它的getTimestamp()并将其与time()进行比较?@SalmanA@user4271704
newdatetime('2010-05-15')
只是一个例子,可以是您之前初始化的任何DateTime对象。假设
$object
是DateTime对象,我使用了
if(new DateTime()>$object){}
,它工作不正确>$bject->getTimeStamp()){}
正常工作。@Salman Asee Ivar Koster的回答它为此实现了什么函数?当然这不会工作,因为
$myDate
将等于
字符串(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;
}