2014-10-09 2 views
0

Я знаю, что есть много таких вопросов, но я не могу заставить их относиться к моей ситуации, у меня возникают проблемы с разницей во времени.Обновление записи, если прошло час с момента отправки

Iam использованием кода воспламенитель и у меня есть БД, который имеет ряды «рабочих мест» в ней с различных областях, одна из которых submitted_time (of type TIME), который установлен в date('H:i:s', time()) во время вставки и другой service_response(of type TIME), который set manually to "02:00:00" при вставке.

Я пытаюсь написать функцию, которая при запуске проверяет, прошел ли час с момента добавления сообщения, но у меня возникли проблемы с пониманием наилучшего способа выполнить это.

Ниже приведена моя попытка преобразовать все строки из двух полей в метку времени unix и вывести «задание», если представленное время больше, чем время + 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"; 
     } 
    } 
} 

Но это никогда или не всегда соответствует этому состоянию.

Я искренен в недоумении и прочитал каждый вопрос, который появился в google, но они либо основаны на времени и дате, которые находятся в одном поле, либо хотят вернуть читаемую пользователем строку типа «x Минуты назад» или они используют оператор sql select, но у меня уже есть оператор, который только оттягивает задания с текущего дня (см. выше), я просто хочу перечислить эти рабочие места, если они были отправлены более часа.

Извините, если вопрос слишком длинный, слишком глупый или не содержит достаточной информации (или слишком много), я спрашиваю, потому что я потерян.

EDIT: Обновленный метод А с помощью @ChrisG и добавил картинку для отображения задачи (что последняя работа (# 2105) не должно быть)

EDIT 2: Обновленный метод снова и обновите изображение, чтобы показать, какие обе переменные проверяются.

** РЕДАКТИРОВАТЬ 3: У меня есть ощущение, что мое состояние никогда не будет выполнено, потому что поданное время никогда не будет больше, чем любое время, которое сейчас составляет +1 час с тех пор, как теперь будет изменяться ... Я чувствую себя глупо, просто пишу это, но я не могу понять, правильно ли это утверждение, я чувствую себя ближе, чем раньше, но все еще потерял. Может быть, время отклика должно быть отправлено на время + один час? **

спасибо за чтение

УАК дампы переменных

enter image description here

+0

Вы пытались сбросить все временные метки, созданные из strtotime() и сравнения? – ChrisG

+0

Привет, спасибо за чтение. Да, я обновлю их с изображением, я их не включил, потому что думал, что неправильно использую эту функцию, поэтому они были бы неактуальны. – Pheonix2105

+0

Извините, что забыл добавить, я их бросил, но так как они такие большие числа, я не могу (читай: мне глупо) действительно проверить их. – Pheonix2105

ответ

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, что он делает, надеюсь, что это помогает любому, как запутанный, как Я был.

Не совсем уверен в этикете принятия вашего собственного ответа в качестве решения, так что я привык, но это работает для меня и, откровенно говоря, уже имеет смысл для большинства людей, я просто попался в проблему.