-1

重複の可能性:
strtotime 日付の奇妙な結果

出席システムの 2 つの時間を比較しようとしています。米国アーカンソー州の正確な時間を取得しようとしていますが、正しい時間を取得できません。私のコードの一部である何か間違ったことをしている場合は、正しい方向に私を導いてください:

$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時間が間違っているか、何か他のものです.どんな助けでも大歓迎です, ありがとう

4

2 に答える 2

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時間を使用してデータベースを設定し、出力をユーザーのタイムゾーンに変換することをお勧めします。

于 2012-12-13T14:42:36.317 に答える
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 時間の差を適用するように強制されます。

于 2012-12-13T14:44:39.770 に答える