如何区分2个时间戳?

时间:2015-12-31 06:52:43

标签: php sql database codeigniter

我在这个项目中使用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列。

  1. ID [int]
  2. USER_EMAIL [varchar]
  3. USER_CLOCK_IN [timestamp]
  4. USER_CLOCK_OUT [timestamp]
  5. USER_WORK_HOURS [时间]
  6. 现在我测试的是结果。

    • USER_CLOCK_IN = 2015-12-31 07:37:59
    • USER_CLOCK_OUT = 2015-12-31 07:38:07

    但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) ));
    

    并且我拼写了一个变量错误。

    谢谢大家

4 个答案:

答案 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';