我知道有很多这样的问题,但我不能让它们适用于我的情况,我在处理时差方面遇到了麻烦。
我使用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转储
答案 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以外的所有结果,它希望它有帮助任何人都像我一样困惑。
不太确定接受你自己的答案作为解决方案的礼仪所以我不会,但这对我有用,坦率地说,对大多数人来说可能已经有道理,我只是陷入了问题。 /强>