2012-12-13 1 views
-1

Можно создать дубликат:
strtotime date weird resultСравнение времени в PHP

Я пытаюсь сравнить два раза для системы посещаемости, я стараюсь, чтобы получить точное время Арканзас, США, но им не удается получить правильное время. Пожалуйста, веди меня в правильном направлении, если я делаю что-то неправильно, часть моего кода:

$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

Каковы ваши результаты и что вы ожидали? Определить «неверно» – Jelmer

+0

Я получаю 12-часовую разницу во времени, я получаю 20:46 вечера для 8:46 AM – jarus

ответ

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 и преобразовать вывод в часовой пояс пользователя.

+0

Я пробовал использовать класс времени, когда я пытаюсь это сделать, это просто дает мне неправильное время, u, пожалуйста, помогите с некоторыми фрагментами кода, спасибо – jarus

+0

Предоставляет ли приведенный выше код время в секундах? – jarus

+0

Да, время отформатировано в секундах, начиная с эпохи UNIX, 00:00:00 UTC, 1/1/1970. Это абсолютный и свободный от часовой пояс, поэтому вы можете преобразовать его в локальное время. – Anton

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 часов (и 17 секунд, пока я печатал вверх по StrToTime бит). Выполнение бит gmt-6 в strtotime заставляет PHP применять 6-часовую разницу к строке, уже уже находящейся в некотором часовом поясе.