php中的时间比较

php中的时间比较,php,time,gmt,Php,Time,Gmt,可能重复: 我试图比较两次考勤系统,我试图得到美国阿肯色州的准确时间,但我无法得到正确的时间。如果我做错了什么,请指导我正确的方向,这是我代码的一部分: $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'";

可能重复:

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

$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";
   }
}
$curTime=日期(“H:ia”,标准时间(“GMT-6”);
foreach($res作为$r)
{
$crs_id=$r['course_id'];
$query1=“选择*从tbl\U课程\U时间,其中课程\U id='$crs\U id';
$res1=$obj->querySelect($query1);
$start_time=DATE(“H:i”,strottime($res1[0]['start_time']);
$end_time=DATE(“H:i”,strottime($res1[0]['end_time']);
如果($curTime>$start\U time&$curTime<$end\U time)
{
$qry=“插入tbl_考勤集stud_id='$id',attd_date='$curDateForDB',attd_time='$curTimeForDB',course_id='$attd_courseId';
$res=$obj->queryInsert($qry);
$result1=“take”;
}
}
它给了我错误的时间,是格林尼治标准时间错了还是别的什么 任何帮助都将不胜感激,谢谢

不要使用
strotime('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);
如果您使用的是PHP5,DateTime类是一种非常干净的获取时间和处理时区转换的方法


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

您的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);
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小时的差异(当我输入strotime位时是17秒)。在strotime中执行gmt-6位会迫使PHP对已经在某个时区的字符串应用6小时的差异。

您的输出是什么,您希望得到什么?定义“不正确”我得到12小时的时间差我得到20:46的时间,因为8:46的AMi我尝试过使用日期时间类,它也给了我不正确的时间,因为你请帮助一些代码片段,谢谢上面的代码给了我秒的时间吗?是的,时间是从UNIX时代开始以秒为单位格式化的,1970年1月1日00:00:00 UTC。这是绝对的,没有时区,因此您可以转换为本地时间。