PHP的时差

时间:2017-01-08 05:54:31

标签: php codeigniter

我正在尝试建立一个考勤系统。 Attendance System in PHP

退房时我会调用一个更新数据库出勤率并计算小时数的函数(使用Codeigniter)

public function updateAttendance($data,$id)
    {
    date_default_timezone_set('Asia/Karachi');
    $attendance=array(
        'check_in'=> $data['check_in'],
        'check_out'=> $data['check_out']
    );
    $this->db->WHERE('id',$id)->update('attendance',$attendance);
    $this->db->query('UPDATE attendance SET hours=(HOUR(TIMEDIFF(check_out,check_in))-1) WHERE DATE(date)=\''.date('Y-m-d').'\' and employee_id='.$id);
    return true;
}

我通过员工ID获取我的出勤率,并在员工的个人资料中呈现这样的视图。

Employee Attendance

问题是我的小时计算错误,可能是由于我的查询。是否有查询修复,或者我必须以时间格式保持时间差异,然后在月末添加所有这些,然后从中获取数小时。

4 个答案:

答案 0 :(得分:4)

你可以试试这个......

$to_time = strtotime("2008-12-13 10:42:00");
$from_time = strtotime("2008-12-13 10:21:00");
echo round(abs($to_time - $from_time) / 60,2). " minute";

答案 1 :(得分:1)

我认为最好使用此功能:

$ MY_TIME = strtotime('2017-01-04 23:12');

这行代码返回这个数字:1483571520

你可以对它们进行操作

您可以使用此功能将它们返回到日期格式以便保存在数据库中:

date('y-m-d H:i',$MY_TIME);

答案 2 :(得分:1)

$time = new DateTime($givenTime);
$time->diff(new DateTime());

尝试此代码可能会对您有所帮助。

答案 3 :(得分:0)

好的,这是一个非常原生的php函数,可能会对您有所帮助。我遇到了同样的问题,并以此解决了这个问题。您不需要在此日期上有任何日期,只需时间。

function timeDiff($time_start = null, $time_end = null, $hour_mode = true)
  {
    $to_time = strtotime($time_start);
    $from_time = strtotime($time_end);
    $hour = 0;

    if ($hour_mode) { // Outputs in hours i.e. 8.50, 10.32
      $hour = round(abs($to_time - $from_time) / 60 / 60, 1); 
    }
    else {
      $hour = round(abs($to_time - $from_time) / 60, 1); // Outputs in minutes i.e. 3360, 500
    }    

    if ($time_end < $time_start) {
        if ($hour_mode) {   
            $hour -= 24; // outputs in hours         
        }
        else {
            $hour -= 1440; // outputs in minutes
        }
    }

    return abs($hour);
  }

用法

echo timeDiff('01:00:00', '02:00:00'); // Outputs '1' in hourly format
echo timeDiff('01:00:00', '02:00:00', false); // Outputs '60' in minute format

只需将函数复制并粘贴到php源代码中所需的任何位置即可,就是这样!希望这会有所帮助!