0

我有 3 个属性,第一个是dateExam (format date),第二个是startTime,第三个是endTime,带有format (time)

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

编辑 - 添加代码

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

2 回答 2

3

假设日期和时间采用ISO 8601 格式:

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

DateTime()对象是可比较的,所以一旦你用适当的日期和时间填充它们,检查一个是否在另外两个之间变得容易(写和读)。

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

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

不过,以上应该可以工作。

于 2014-05-01T18:01:13.783 回答
1

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

例如,您可以使用诸如date('h',$datetime->getTimestamp)从设置的 DateTime 对象中提取小时之类的方法,或者在需要时间戳的任何时候使用 $datetime->getTimestamp。

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

于 2014-05-01T18:01:36.103 回答