在PHP中的时间比较

时间:2012-12-13 14:39:13

标签: php time gmt

  

可能重复:
  strtotime date weird result

我正在尝试比较两次考勤系统,我正在努力获得美国阿肯色州的准确时间,但我无法获得正确的时间。如果我做错了,请指导我正确的方向,这是我的代码的一部分:

$curTime =DATE("H:i A", strtotime('GMT-6'));

foreach($res as $r)
{
    $crs_id =$r['course_id']; 
    $query1 = "select * from tbl_course_time where course_id='$crs_id'";

     $res1 = $obj->querySelect($query1);


     $start_time  = DATE("H:i", STRTOTIME($res1[0]['start_time']));
     $end_time = DATE("H:i", STRTOTIME($res1[0]['end_time']));

    if ($curTime > $start_time && $curTime < $end_time) 
    {

      $qry="insert into tbl_attendance set         stud_id='$id',attd_date='$curDateForDB',attd_time='$curTimeForDB',course_id='$attd_courseId'";

    $res=$obj->queryInsert($qry);

    $result1 = "taken";
   }
}

它给了我不正确的时间是GMT时间我出错或其他什么 非常感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:1)

请勿使用strtotime('GMT-6'),因为GMT-6不是时间;这是一个时区。

// gets the UTC time using gmdate() instead of date()
$utc_str = gmdate("M d Y H:i:s", time());

// get the UTC timestamp, should you need it
$utc = strtotime($utc_str);

如果您使用的是PHP 5,那么DateTime类是一种非常简洁的方式来获取时间并处理时区转换。

另外,我建议您使用UTC时间设置数据库,并将输出转换为用户的时区。

答案 1 :(得分:0)

你正在做gmt-6业务错误。以下是已经在GMT-6中的服务器:

echo date('r');                     // Thu, 13 Dec 2012 02:40:00 -0600
echo date('r', strtotime('gmt-6')); // Thu, 13 Dec 2012 08:40:17 -0600

注意6小时的差异(当我输入strtotime位时为17秒)。在strtotime中执行gmt-6位会强制PHP将6小时的差异应用于已经存在于某个时区的字符串。