0

这是我现在拥有的代码:

<?php while($row = mysql_fetch_array( $result )){ ?>
<tr>
    <td><?php echo $row["ID"] ?></td>
    <td><?php echo $row["LOCATION"] ?></td>
    <?php 
        if ($row["STATUS"] != "OK")
        { 
        ?><td bgcolor="red"><?php echo $row["STATUS"] ?></td><?php 
        } else{ 
        ?><td><?php echo $row["STATUS"] ?></td><?php 
        } 
        ?><td><?php echo $row["TIME"] ?></td>
</tr>
<?php } ?>

我想要做的是另一个类似于我为状态所做的 if 语句,但将超过 1 小时的任何内容突出显示为红色。我知道 MySql 正在 UMT 中运行,而服务器本身正在 EST 中运行,并且不知道这是否会导致问题(因为我很喜欢 php)。

4

3 回答 3

4

最好的方法是使用你的 SQL 查询来计算它是否超过 1 小时,这样你就没有“时区问题”。

SELECT *, IF(HOUR(TIMEDIFF(NOW(), DateTimeField)) >= 1, 1, 0) AS OlderThanAnHour
于 2013-04-12T13:43:19.730 回答
1

我喜欢将 DateTime 用于此类任务,因为它通常比某些时间戳计算更具可读性。也许你也喜欢这种方法。

$inOneHour = new DateTime();
$inOneHour->modify('-1 hour');
$time = new DateTime($row['TIME']);

if ($time < $inOneHour) {
    /* your code */
}
于 2013-04-12T13:39:14.703 回答
1

如果数据库服务器采用 UTC,您可以使用以下方式比较时间strtotime()

$now = time();

while ... {

    if (strtotime("{$row['TIME']} GMT") + 3600 < $now) {
         // it's old, dude!
    }
}

您还可以在查询中添加一个表达式来确定年龄:

`TIME` < DATE_SUB(NOW(), INTERVAL 1 HOUR) AS is_old

然后,在 PHP 中:

if ($row['is_old']) {
    // it's old dude!
}
于 2013-04-12T13:40:27.373 回答