如果提交后已经过了一小时,则更新记录

时间:2014-10-09 20:21:07

标签: php mysql codeigniter datetime

我知道有很多这样的问题,但我不能让它们适用于我的情况,我在处理时差方面遇到了麻烦。

我使用Code Igniter并且我有一个包含" jobs"行的数据库。在其中包含各种字段,其中一个是submitted_time (of type TIME),在插入时设置为date('H:i:s', time()),另一个service_response(of type TIME)在插入时为set manually to "02:00:00"

我正在尝试编写一个函数,在运行时检查自添加帖子后是否已经过了一个小时,但我无法理解实现此目的的最佳方法。

以下是我尝试将两个字段中的所有字符串转换为unix时间戳并回显出" job"如果提交的时间大于现在的时间+ 1小时(service_response / 2)

function updateJobTimes()
{
    $this->load->model('job_model');

    $oj = $this->job_model->getAllTodaysOpenJobs();
    //var_dump($oj);
    foreach($oj as $job) 
    {
        $timesubmitted = strtotime($job->submitted_time);
        $now = strtotime(date('H:i:s', time()));
        //responsetime = now + 1 hour;
        $responsetime = strtotime("+1 hours");

        echo "Submitted_time =" . $job->submitted_time. "<br>\r\n";
        echo "strtotime(Submitted_time) =". $timesubmitted. "<br>\r\n";
        echo "Service_reponse =" . $job->service_response. "<br>\r\n";
        echo "strtotime(Serivce_response) =" .$responsetime. "<br>\r\n";
        echo "Time now =".$now. "<br>";
        echo "response time(now +1hour) =". date('H:i:s', $responsetime) ."<br>";
        echo "-----just a separator---------------------------------- <br>";




        //this should show the last job "job#2105" which is the last iteration in the picture below 
        if($timesubmitted > $responsetime)
        {
            $difference = $res - $timesubmitted;
            echo "<p class='well'>Job #".$job->reference. "</p>\r\n";
        }
    }
}

但它永远或永远不会满足条件。

我真的很茫然,并且已经阅读了谷歌中出现的每一个问题,但它们要么基于同一领域的时间和日期,要么想要返回用户可读的字符串,例如&#34; x分钟前& #34;或者他们使用sql select语句,但我已经有一个只从当天(上图)撤回工作的声明,我只想列出这些工作,如果他们已提交超过一个小时。

很抱歉,如果问题太长,太愚蠢或者没有提供足够的信息(或太多),我会问,因为我迷路了。

编辑:在@ChrisG的帮助下更新了方法A并添加了一张图片来显示问题(上一份工作(#2105)不应该在那里)

编辑2:再次更新方法并更新图片以显示正在检查的两个变量。

**编辑3:我有一种感觉,看着我的代码,条件永远不会满足,因为提交的时间永远不会超过现在的+1小时,因为现在总是会改变......我觉得愚蠢的只是写出来,但我似乎无法正确的正确的声明,我现在感觉比以前更接近,但仍然失去了。也许响应时间应该是提交时间+一小时? **

感谢您阅读

变量的var转储

enter image description here

1 个答案:

答案 0 :(得分:0)

我明白了。

function updateJobTimes()
{
    $this->load->model('job_model');

    $oj = $this->job_model->getAllTodaysOpenJobs();
    //var_dump($oj);
    foreach($oj as $job) 
    {
        $timesubmitted = strtotime($job->submitted_time);
        $now = strtotime(date('H:i:s', time()));

        $responsetime = strtotime("+1 hours", $timesubmitted);

        // echo "Submitted_time =" . $job->submitted_time. "<br>\r\n";
        // echo "strtotime(Submitted_time) =". $timesubmitted. "<br>\r\n";
        // echo "strtotime(Serivce_response) =" .$responsetime. "<br>\r\n";
        // echo "Time now =".$now. "<br>";
        // echo "response time(now +1hour) =". date('H:i:s', $responsetime) ."<br>";
        // echo "-----just a separator---------------------------------- <br>";





        if($now > $responsetime)
        {
            //$difference = $res - $timesubmitted;
            echo "<p class='well'>Job #".$job->reference. " was submitted at ".date('H:i:s',$timesubmitted). " and its response time is " .date('H:i:s',$responsetime). " and it is now ".date('H:i:s',time()). "</p>\r\n";
        }
    }
}

基本上我正在做if(the time submitted was greater than the time submitted + 1hour),这将永远是我应该做的if(**thetimenow** is greater than time_submitted + 1 hour) //在我的情况下应该返回除1以外的所有结果,它希望它有帮助任何人都像我一样困惑。

不太确定接受你自己的答案作为解决方案的礼仪所以我不会,但这对我有用,坦率地说,对大多数人来说可能已经有道理,我只是陷入了问题。 /强>