Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何确定UTC与服务器时区的偏移量?_Php_Date_Utc_Gmt - Fatal编程技术网

Php 如何确定UTC与服务器时区的偏移量?

Php 如何确定UTC与服务器时区的偏移量?,php,date,utc,gmt,Php,Date,Utc,Gmt,我已经找到了许多有关UTC表和php日期方法的转换示例,但我仍然错过了在获取服务器日期后将其转换为网页上用户时区选择的简单方法。 在这一页上,我找到了一个明确的指南来了解范围,但我不知道如何连接,例如桌上的“欧洲/罗马”,因此有更清楚的内容吗? 我知道服务器的时区(美国/芝加哥),但我仍然不知道如何将其从UTC方法更改为从用户机器中选择的不同时区(例如“欧洲/罗马”) 我尝试过一些东西,但我仍然错过了一些东西,我不知道是什么: <?php $timezone = date ("e"); $

我已经找到了许多有关UTC表和php日期方法的转换示例,但我仍然错过了在获取服务器日期后将其转换为网页上用户时区选择的简单方法。

在这一页上,我找到了一个明确的指南来了解范围,但我不知道如何连接,例如桌上的“欧洲/罗马”,因此有更清楚的内容吗?

我知道服务器的时区(美国/芝加哥),但我仍然不知道如何将其从UTC方法更改为从用户机器中选择的不同时区(例如“欧洲/罗马”)

我尝试过一些东西,但我仍然错过了一些东西,我不知道是什么:

<?php
$timezone = date ("e");
$date = date ('Y-m-d H:i:s');
print $date." - this is my server date, and his timezone is - $timezone<br/>";

$user_timezone = "Europe/Rome"; // there is a way to convert Europe/Rome to UTC -13?
$selected_timezone = "-13"; // is -13 like Europe/Rome in all cases or only because my server is America/Chicago?
$date_user = date ("Y-m-d H:i:s $selected_timezone");
$str_date_user =  strtotime ($date_user);
$new_user_date = date ('Y-m-d H:i:s', $str_date_user);
print $new_user_date . " - this is my server date, and his timezone is - $user_timezone";
?>

不存在将欧洲/罗马转换为UTC时区-13的方法吗?
-13在所有情况下都像欧洲/罗马吗?或者只是因为我的服务器是美国/芝加哥吗?

您可以使用它生成显示UTC时间的日期-无论服务器运行在哪个时区。然后,您可以简单地将时区差添加到用于生成日期以获取用户时间的时间戳中,即
hours*3600

另一种方法是使用将本地时间临时设置为用户的时区

第一个想法的简单示例如下:

<?php
$offset   = -13 * 3600; // timezone offset for UTC-13
$utcTime  = gmdate( 'd.m.Y H:i' );
$userTime = gmdate( 'd.m.Y H:i', time() + $offset );
?>

您必须结合使用PHP(获取服务器时间数据)和JS(获取用户时间数据)