0

我有一个下拉菜单,其中显示考试的名称、日期和时间,我想做的是,如果从当前日期或时间过去了考试日期,则文本显示为红色,否则文本显示为绿色。

我遇到的问题是,如果当前日期是 2012 年 10 月 11 日(即今天),并且考试的日期和时间如下:

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>";
4

1 回答 1

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)
于 2012-11-10T15:55:48.697 回答