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

时间:2009-12-05 15:26:11

标签: php date utc gmt

我发现了很多关于UTC表和php日期方法的例子来转换它,但是在获得服务器日期之后我仍然想念一个简单的方法,将它转换为我网页上的用户时区选择。 / p>

在这个页面http://vkham.com/UTC.html我找到了一个清晰的指南来了解范围,但我不知道如何连接例如“欧洲/罗马”在桌子上,所以有一些更清楚的它?

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

我尝试了一些东西,但我仍然会遗漏一些东西,我不知道它是什么:

<?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都像欧洲/罗马,还是仅仅因为我的服务器是美国/芝加哥?

1 个答案:

答案 0 :(得分:3)

您可以使用gmdate生成显示UTC时间的日期 - 无论服务器运行的时区是什么。然后您只需将时区差异hours * 3600添加到您用于的时间戳中生成日期以获得用户的时间。

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

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

<?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 );
?>