我有一个下拉菜单,显示考试的姓名,日期和时间,我想要做的是,如果从当前日期或时间开始考试日期,则文本显示为红色,否则为文本是绿色的。
我遇到的问题是,如果当前日期是10-11-2012(今天),并且考试的日期和时间如下:
10-11-2012,16:00:00
它以红色显示文本而不是绿色。问题是它没有识别当前时间,它认为因为它是当前日期,它应该是红色,但是因为当前时间没有在当前日期过去,所以它应该是绿色的。
数据库将日期存储为2012-11-10,将数据库中的时间存储为16:00:00。在提到的下拉列表中,它存储为:10-11-2012,16:00:00
以下是代码:
<style>
.red{ color:red; }
.green{ color:green; }
</style>
...
$now = date("Y-m-d h:i:s");
while ( $sessionqrystmt->fetch() ) {
if(strtotime($now) > strtotime($dbSessionDate)){
$class = 'red';
} else {
$class = 'green';
}
$sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), $dbSessionTime) . PHP_EOL;
}
$ now应该是当前的日期和时间,$ dbSessionDate应该是10-11-2012
更新
$sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL;
$sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$now = date("Y-m-d H:i:s");
echo strtotime($now).'<br>';
echo strtotime('10-11-2012, 16:00:00');
while ( $sessionqrystmt->fetch() ) {
if(strtotime($now) > strtotime($dbSessionDate)){
$class = 'red';
} else {
$class = 'green';
}
$sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;
}
$sessionHTML .= '</select>';
$assessmentform = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'>
<p><strong>Assessments:</strong> {$sessionHTML} </p>
</form>";
答案 0 :(得分:0)
代码似乎没问题。尝试:
$now = date("Y-m-d h:i:s");
echo strtotime($now).'<br>';
echo strtotime('10-11-2012, 16:00:00');
并检查服务器时间。
<强>更新强>
替换:
$sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;
使用:
$sessionHTML .= sprintf("<option value='%s' style='color: %s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;
防止css错误。
或替换:
strtotime($now) > strtotime($dbSessionDate)
使用:
strtotime($now) < strtotime($dbSessionDate)