比较日期和时间

时间:2014-05-01 17:58:14

标签: php date date-comparison

我有3个属性,第一个 dateExam (格式日期) ,第二个 startTime 和第三个是 endTime 格式(时间)

我希望这些属性是否在当前日期和时间之间,以便显示考试。 我试图在时间戳中转换这些属性来比较它们但是我失败了

编辑 - 添加了代码

$startDate = strtotime($dateExam.$startTime); 
$endDate = strtotime($dateExam.$endTime); 
if($startDate >= time() <= $endDate) { 
    echo'..............' ; 
}

2 个答案:

答案 0 :(得分:3)

假设日期和时间为ISO 8601 formats

$examStartTime = new DateTime($dateExam . ' ' . $startTime);
$examEndTime   = new DateTime($dateExam . ' ' . $endTime);
$now           = new DateTime();
if ($now > $examStartTime  && $now < $examEndTime) {
    // it's exam time!
}

DateTime()个对象具有可比性,因此一旦用适当的日期和时间填充它们,检查一个是否在另外两个之间变得容易(写入和读取)。

您的代码遇到的问题是由于您对日期的比较。 PHP并不像某些语言那样支持expression1 logicalOperator expression2 logicalOperator expression3(连接逻辑运算)。我还认为你需要在日期和时间元素之间留一个空格。

$startDate = strtotime($dateExam.' '.$startTime); 
$endDate = strtotime($dateExam.' '.$endTime); 
if($startDate >= time() && time() <= $endDate) { 

但上述情况应该有效。

答案 1 :(得分:1)

使用DateTime()课程。它的内置方法和属性应足以执行任何日期/时间比较,特别是如果您根据需要将其与DateInterval()配对。

例如,您可以使用诸如date('h',$datetime->getTimestamp)之类的东西来拉出设置的DateTime对象的小时,或者只要在需要时间戳时使用$ datetime-&gt; getTimestamp。

使用$dateExam = new DateTime('Whatever Time');进行实例化,然后您就可以访问有关该时间戳的所有内容。关于这一点的好处是,它需要您实例化它的任何日期,并为您创建的任何其他日期时间对象提供兼容的格式 - 特别是如果您有包含日期​​信息但使用不同格式(日期,时间戳等)的数据库字段