PHP中的时区

PHP中的时区,php,Php,我有一个关于从PHP用户那里获取时区的问题。我正在服务器上获取用户数据。在该用户数据中,我获得了UTC的用户日期和时间,UTC是默认时区 例如,如果用户在上午11:43左右发送数据,那么在我看来,它将转换为UTC,并获得类似上午6:13(UTC+5:30)的时间。如果用户在上午9:13左右发送数据,那么它将在上午6:13(UTC+3:00)发送。我希望用户时间在他们的终端,即他们的时区。结论是当我们不知道用户的时区时,需要得到本地时间 我尝试了很多方法,比如DateTimeZone和date\u

我有一个关于从PHP用户那里获取时区的问题。我正在服务器上获取用户数据。在该用户数据中,我获得了UTC的用户日期和时间,UTC是默认时区

例如,如果用户在上午11:43左右发送数据,那么在我看来,它将转换为UTC,并获得类似上午6:13(UTC+5:30)的时间。如果用户在上午9:13左右发送数据,那么它将在上午6:13(UTC+3:00)发送。我希望用户时间在他们的终端,即他们的时区。结论是当我们不知道用户的时区时,需要得到本地时间 我尝试了很多方法,比如DateTimeZone和date\u default\u timezone\u set()和date\u default\u timezone\u get()。 请帮我解决这个问题。提前谢谢

  • JavaScript时区应通过AJAX发送到服务器,可通过以下方式获取:

    if(typeof Intl==“object”和&typeof new Intl.DateTimeFormat().resolvedOptions==“function”和&typeof new Intl.DateTimeFormat().resolvedOptions().timeZone==“string”)

    {

    t=new Intl.DateTimeFormat().resolvedOptions().timeZone;

    }

  • 所有SQL查询都应该为HTTP GET请求使用相对时区(例如
    设置时区='-05:00'
    ),为HTTP POST请求使用UTC/GMT(
    设置时区='+00:00'

  • 在准备向客户端输出字符串之前,不要在任何其他地方更改时区。使用以下命令:

  • 日期函数: 使用该功能:
    您必须将其本地时间与数据一起发送。在服务器中发送此数据PHP无法可靠地确定浏览器的时区,因为这不是HTTP协议的一部分。您需要通过IP地址数据库或编写一些客户端JavaScript代码来提交信息。
    function date_output($date, $format, $strtotime = '', $tz = true)
    {
     date_default_timezone_set('UTC');
    
     if (ctype_digit($date)) {$dt = new DateTime(date('Y-m-d H:i:s', $date));}
     else {$dt = new DateTime($date);}
    
     if ($tz)
     {
      try
      {
       if (isset($_SESSION['time_zone']) && strlen($_SESSION['time_zone']) > 0) {$dt->setTimezone(new DateTimeZone($_SESSION['time_zone']));}
       else if (isset($_SESSION['time_zone_offset'])) {$tz = new DateTimeZone(($_SESSION['time_zone_offset'] * 36));}
      }
      catch (exception $e) {}//etc
     }
    
     if (strlen($strtotime) > 0) {$dt->modify($strtotime);}
    
     return $dt->format($format);
    }
    
    echo user_date_class($row1['date'], 'l F jS, Y, h:iA');