我在这个项目中使用codeigniter 3.0.3。
我试图区分两个时间戳(时钟输入和时钟输出)。
以下是试图这样做的功能:
public function clock_user_out()
{
$this->db->where('USER_EMAIL', $this->session->userdata('USER_EMAIL'))
$data = $this->db->get('clocked_in_users');
$uemail = $data->row()->USER_EMAIL;
$uclockin = $data->row()->USER_CLOCK_IN;
$uclockout = date(('Y-m-d H:i:s'));
$uhours = $uclockout-$uclockin;
$newdata['USER_EMAIL'] = $uemail;
$newdata['USER_CLOCK_IN'] = $uclockin;
$newdata['USER_CLOCK_OUT'] = $uclockout;
$newdata['USER_WORK_HOURS'] = $uhours;
$this->db->insert('user_hours',$newdata);
$this->db->where('USER_EMAIL', $this->session->userdata('USER_EMAIL'));
$this->db->delete('clocked_in_users');
}
我相信错误是我通过从$ uclockout减去$ uclockin获得变量$ uhours。
我正在使用的表格中有5列。
现在我测试的是结果。
但USER_WORK_HOURS的结果最终为00:20:15。这对我没有意义。它看起来唯一的事情是2015年,并将其分解为数据库中的TIME格式?
那是怎么回事?我是否使用了错误的格式?
这样做的正确方法是什么?
提前致谢。
编辑:问题解决了,感谢Ashok Chitroda和Jorge Torres,这是我必须做出的更正$uhours = $uclockout-$uclockin;
到
$uhours = date('H:i:s' , (strtotime(date('Y-m-d 00:00:00'))+ strtotime($uclockout) - strtotime($clockin) ));
并且我拼写了一个变量错误。
谢谢大家
答案 0 :(得分:3)
替换
$uhours = $uclockout-$clockin;
到
$uhours = date('H:i:s' , (strtotime(date('Y-m-d 00:00:00'))+ strtotime($uclockout) - strtotime($clockin) ));
答案 1 :(得分:1)
你可能在减法中使用了错误的变量吗?
$uclockin = $data->row()->USER_CLOCK_IN;
$uclockout = date(('Y-m-d H:i:s'));
$uhours = $uclockout-$clockin;
注意$ uclockin Vs $ clockin
答案 2 :(得分:0)
在查询中使用timestampdiff(UNIT,FIRST TIMESTAMP,SECOND TIMESTAMP)。 Follow this link
答案 3 :(得分:0)
你可以像这样使用
$to_time = $clockin;
$from_time =$uclockout;
$a= round(abs($to_time - $from_time) / 60);
echo ($a/60).' Hours';
如果你的$ clockin没有在时间戳中请求将日期转换为时间戳 像这样。
$to_time = strtotime("2008-12-13 09:42:00");
$from_time = strtotime("2008-12-13 11:42:00");
$a= round(abs($to_time - $from_time) / 60);
echo ($a/60).' Hours';