【问题标题】:Time comparison in php [duplicate]php中的时间比较[重复]
【发布时间】:2012-12-01 11:27:51
【问题描述】:

可能重复:
strtotime date weird result

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

$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";
   }
}

它给我的时间不正确,是格林威治标准时间我弄错了还是别的什么 任何帮助将不胜感激,谢谢

【问题讨论】:

  • 你的输出是什么,你期望什么?定义“不正确”
  • 我得到了 12 小时的时差,我得到了上午 8:46 的晚上 20:46

标签: php time gmt


【解决方案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 时间设置数据库,并将输出转换为用户的时区。

【讨论】:

  • 当我尝试这样做时,我尝试过使用日期时间类,它也只是给了我不正确的时间,cud 你请帮助一些代码sn-ps,谢谢
  • 上面的代码是否给了我以秒为单位的时间?
  • 是的,时间以秒为单位,从 UNIX 纪元开始,即 1970 年 1 月 1 日 00:00:00 UTC。这是绝对时间,不受时区限制,因此您可以转换为本地时间。
【解决方案2】:

您做错了 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 小时的差异应用于已经在某个时区的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2011-08-13
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多