如何解决php中的时间数据比较问题

如何解决php中的时间数据比较问题,php,Php,我有一个合同时间格式,比如2020年7月28日14:18:25,我想检查它是否从现在起过期。但我不明白这是正确的。似乎有几分钟的不同 这是密码 //$now = strtotime(date("m-d-y H:i:s")); $now = time(); $contractDate = strtotime("July 28, 2020 14:18:25"); // check if contract is still on or has ended fr

我有一个合同时间格式,比如2020年7月28日14:18:25,我想检查它是否从现在起过期。但我不明白这是正确的。似乎有几分钟的不同

这是密码

//$now = strtotime(date("m-d-y H:i:s"));
$now = time();
$contractDate = strtotime("July 28, 2020 14:18:25");

// check if contract is still on or has ended from now

if($now < $contractDate) {
   echo "contract is on";
} else {
    echo "contract time ended!";  
}
/$now=strottime(日期(“m-d-y H:i:s”);
$now=时间();
$contractDate=标准时间(“2020年7月28日14:18:25”);
//检查合同是否仍然有效或从现在起已终止
如果($now<$contractDate){
echo“合同已生效”;
}否则{
回声“合同时间结束!”;
}

由于格式的原因,您无法正确获取它。如果您可以将日期设置为“yyyy-mm-dd”格式,那么它应该可以工作。试试这个:

$now = strtotime(date("y-m-d"));
$now = time();
$contractDate = strtotime("2020-07-28");
if($now < $contractDate) {
echo "contract is on";
    } else {
echo "contract time ended!";  
    }
$now=strottime(日期(“y-m-d”);
$now=时间();
$contractDate=标准时间(“2020-07-28”);
如果($now<$contractDate){
echo“合同已生效”;
}否则{
回声“合同时间结束!”;
}

可能是时区问题(您的
time()
被某些人关闭了)

您可以通过在PHP脚本中显式设置时区来解决这个问题。您可以使用
date\u default\u timezone\u set():

这是你的工作清单

您可能还想尝试一个调用
date\u default\u timezone\u get()
的测试脚本,以查看它的实际设置,以验证这是否确实是问题所在

您还可以尝试使用
DateTime

$d1 = new DateTime();
$d2 = new DateTime("July 28, 2020 14:18:25");
$diff = $d1->diff($d2);
echo $diff->format('%H:%I:%S');
$d1 = new DateTime();
$d2 = new DateTime("July 28, 2020 14:18:25");
$diff = $d1->diff($d2);
echo $diff->format('%H:%I:%S');