我需要检查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是未来日期,它的工作正常,但如果它的日期相同,那么它的回声“不行”
任何帮助?
答案 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";
}