我正在尝试比较两次考勤系统,我正在努力获得美国阿肯色州的准确时间,但我无法获得正确的时间。如果我做错了,请指导我正确的方向,这是我的代码的一部分:
$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时间我出错或其他什么 非常感谢任何帮助,谢谢
答案 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小时的差异应用于已经存在于某个时区的字符串。