在php中检查新的DateTime是今天还是将来

时间:2016-10-27 10:02:08

标签: php

我需要检查date1是今天还是将来的日期,如果是,那就确定了 如果不是(过去)它不好。我看到很多例子但是没有一个主题是检查date1今天是否相等。 我的代码是:

$today = new DateTime(); // Today
$today->format('Y-m-d'); //2016-10-27
$contractDateBegin = new DateTime($date1); //2016-10-27

if($today->getTimestamp() <= $contractDateBegin->getTimestamp()){
   echo 'OK';
}
else{
   echo "NOT OK";
}

如果date1是未来日期,它的工作正常,但如果它的日期相同,那么它的回声“不行”

任何帮助?

4 个答案:

答案 0 :(得分:0)

“Y-m-d格式”对于字符串的直接字典比较也是完美的,不需要将其转换为DateTime对象。使用PHP7,您可以使用着名的speceship operator;)

DateTimeOriginal

答案 1 :(得分:0)

getTimestamp()包括&#34; H:我:s&#34;。所以在比较秒数时它会失败。 在你的情况下,你想比较日期(&#39; Y-m-d&#39;)? 如果您只想使用DateTime并比较时间戳。请尝试

$today = new DateTime(); // Today
$contractDateBegin = new DateTime($date1); //2016-10-27

// Set time to 0
$today->setTime(0, 0, 0);
$contractDateBegin->setTime(0, 0, 0);

if($today->getTimestamp() <= $contractDateBegin->getTimestamp()){
   echo 'OK';
}
else{
   echo "NOT OK";
}

答案 2 :(得分:0)

[AllowAnonymous] [HttpGet] public ActionResult Login() { . . . . string userName = (string)Session["UserName"]; string[] userRoles = (string[])Session["UserRoles"]; ClaimsIdentity identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userName)); userRoles.ToList().ForEach((role) => identity.AddClaim(new Claim(ClaimTypes.Role, role))); identity.AddClaim(new Claim(ClaimTypes.Name, userName)); AuthenticationManager.SignIn(identity); . . . . } 可以定义为$today,这意味着今天午夜 - 时间部分将自动清零

new DateTime("today")

<强> DEMO

答案 3 :(得分:0)

我想你只想比较日期(忽略时间)。这应该有效:

$today = new DateTime();
$today = $today->format('Y-m-d');
$contractDateBegin = new DateTime($date1);
$contractDateBegin = $contractDateBegin->format('Y-m-d');

if ($today <= $contractDateBegin){
    echo 'OK';
} else {
   echo "NOT OK";
}