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。这是绝对的,没有时区,因此您可以转换为本地时间。