在PHP中比较时间

时间:2014-09-05 05:50:40

标签: php time

我正在比较我的数据库的截止时间,这是24小时格式(如3:00 = 15:00)到现在的时间。

例如,如果学生无法在适当的时间内提交,则上传链接将显示为灰色。

我对日期比较没问题,我的问题是时间。

这是我目前的代码:

$date = date("Y-m-d");
$time = strtotime(date('G:i:s'));
$deadtime = strtotime($r['upload_deadtime']);

/*------$deadtime = 15:00:00 ---------*/

if(date($r['upload_deadline']) >= $date && $deadtime > $time){

echo '<td><a href="stud_prep.php">upload</a></td>';                 
}
else{
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}

更新:让我们忘记日期比较,我想说的是如何比较我的截止时间(24小时格式(如3:00:00)到现在为止的时间到了15:00:00)。

这是我目前的代码:

$time = strtotime(date('G:i:s')); /*which returns 23:15:42 instead of 14:15:42 */
$deadtime = strtotime('15:00:00');


if($deadtime > $time){

echo '<td><a href="stud_prep.php">upload</a></td>';                 
}
else{
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}

4 个答案:

答案 0 :(得分:0)

您只需在时间检查上进行比较。

您正在检查截止日期是否在将来(假设脚本始终在当前运行)然后您在日期时间纪元值上检查截止时间是否小于当前时间(之前的IE)

使用strtotime进行检查时,您不需要检查日期,因为它们已经包含在日期和时间中。但/ / p>

简单地说:

if($deadtime > $time){
echo '<td><a href="stud_prep.php">upload</a></td>';                 
} else {
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}

如果截止日期是将来,这只会在表格中显示上传链接。

编辑:

对于新代码,您只需要将死区时间设置为dBase的截止日期和时间戳的正常时间。然后代码将工作。 你还在比较错误的方法!

示例:

/* deadtime = strtotime of datetimestamp in format yyyy-mm-dd G:i:s */
/* $time = strtotime of now. */
if($deadtime > $time){
echo '<td><a href="stud_prep.php">upload</a></td>';                 
} else {
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}

答案 1 :(得分:0)

使用时间PHP's DateTime::Diff

// Current Date and Time
$date_time_now = new DateTime();

// Date Time values from DB (Assuming it's coming from database)
$date_time_deadline = new DateTime('2014-09-08 15:00:00');


// Calculate difference
$difference = $date_time_now->diff($date_time_deadline);

// Output difference in human-readable format
echo "Difference: " . $difference->format('%d days, %h hours, %i minutes, %s seconds');

http://php.net/manual/en/datetime.diff.php

答案 2 :(得分:0)

date_default_timezone_set('Asia/Manila');

$deadtime = strtotime("15:00:00");

if ($deadtime - time() > 0){
  echo '<td><a href="stud_prep.php">upload</a></td>';                 
}else{
  echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}

这可能会解决您的时间比较问题!!

strtotime("15:00:00")会将时间转换为今天15:00:00的unix时间戳,time()具有当前的unix时间戳。

答案 3 :(得分:0)

这是我的工作代码。我想你会知道我的观点是。

date_default_timezone_set('Asia/Manila');
$time = date('H:i:s');
$deadline_time = date("h:i a",strtotime($r['upload_deadtime']));

list($hours,$mins,$secs) = explode(":",$time);
$hours  = date("H") + 9;/*-gives me wrong hours so i got to modify it-*/

$time_array = array($hours,$mins,$secs);
$new_time =implode(":",$time_array);

$deadtime = strtotime($deadline_time);
$time_now = strtotime($new_time);

if($r['upload_deadline'] < $date && $deadtime < $time_now){/*-compares the date and time-*/

echo '<td><a  href="stud_prep.php">upload</a></td>';

}
else{
echo '<td><a title="your too late! haha!" style="color:grey">upload</a></td>';  
}