Php 如何检查当前日期/时间是否超过设定的日期/时间?
我正在尝试编写一个脚本来检查当前日期/时间是否超过了2010年5月15日下午4点的时间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()){
如何使用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“dtAdate\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@user4271704newdatetime('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;
}