【问题标题】:Check if a given date is past检查给定日期是否过去
【发布时间】:2011-03-18 21:12:24
【问题描述】:

我有一个包含活动的周历,并且希望用户不能添加过去几天的活动。所以我想使用这样的功能:

if( strtotime($this->day) < time() ){ // date format is YYYY-MM-DD
// date is past 
}else{   
// date is not past
}

它似乎工作正常,除了它将今天日期视为过去一天。我做错了什么?

【问题讨论】:

    标签: php date time


    【解决方案1】:
    if(strtotime($this->day) < mktime(0, 0, 0)){
        // date is past
    } else {
        // date is not past
    }
    

    【讨论】:

      【解决方案2】:

      更简单->

      if(strtotime($this->day) < strtotime(date('Y-m-d')))
      {
         ...
      }
      else
      {
         ...
      }
      

      【讨论】:

      • 也谢谢你!我没有考虑在 time() 函数中设置今天的日期!
      • strtotime 函数...只是打错了..抱歉
      • 如果你也想算秒,加H:i:s strtotime(date('Y-m-d H:i:s'))
      【解决方案3】:

      时间戳永远不会只包含日期,而是始终精确到当前秒。 strtotime($this-&gt;day) 将在 0:00 返回今天的日期,而您正在将其与现在进行比较,例如 11:12

      您可以使用strtotime("$this-&gt;day 12:59:59pm");(如果$this-&gt;day 的格式允许)或使用明天的时间戳。

      【讨论】:

      • 或者,使用strtotime($this-&gt;day)&lt;time()-24*60*60
      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多