0

很难说清楚我在标题中遇到的问题,但情况是这样的:我正在为一个 3 层考试网站的后端工作。我目前正在更新学生申请考试时使用的功能。考试有开始和结束日期和时间,以及时间限制。我想要做的是特定于考试期间剩余时间少于考试时间限制的情况,例如考试期间在下午 5:00 结束。现在时间是下午 4 点 30 分。考试时间限制为一个半小时。我想用 30 分钟替换一个半小时的时间限制。为此,我需要 3 个日期,我将解释如何获得每个日期:

  • 我的功能页面的时间戳。当控制器调用我的页面时,在我打开会话后,我将默认时区设置为美国/纽约(我所在的地区)。要获取时间戳,我使用以下代码:

    $date = date('Ymd H:i:s');

    $currenttime = date('H:i:s', strtotime($date));

  • 我使用对我的数据库的函数调用来获取时间限制和考试结束的时间(我还使用日期进行其他比较来检查考试可用性)。考试结束时间存储在结果数组 $res[10] 中,时间限制在 $res[11] 中。

  • 假设考试的截止日期等于时间戳的日期,并且在考试期间(我之前执行了2次检查),我想检查当前时间和考试结束之间的差异是否小于超过时间限制。如果距离考试结束的时间少于时间限制,我想将该时间量设置为新的时间限制。我的前端期望我的结果采用 HH:mm:ss 形式(php 的等价物是 H:i:s)。因此,如果距离考试结束还有 30 分钟且时间限制为一个半小时,我希望新的时间限制为 30 分钟(或 00:30:00)。我的代码目前无法按预期工作。我符合 if 语句的标准,这是我想要的结果。当我将其转换为 H:i:s 形式时,问题似乎出在哪里(我在 19:00:00 左右不断得到结果)。我的每一篇文章

    $compareTime = strtotime($res[10]) - strtotime($currenttime);
    
    if(compareTime < strtotime($res[11]){
    
        $timelimit = date('H:i:s', $compareTime);
    
    }else{
    
        $timelimit = $res[11];
    
    }
    

如果有更好的方法可以做到这一点,我很乐意知道。我对 php 还很陌生,我承认我意识到这可能是一个奇怪的问题,但这就是小组决定采用的方式。

4

1 回答 1

1

也许是因为数据库和 PHP 服务器使用不同的时区。通过打印这些变量来查看它们的值。

于 2013-11-02T06:46:50.120 回答