我正在比较我的数据库的截止时间,这是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>';
}
答案 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)
// 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');
答案 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>';
}