题
我发现了许多关于 UTC 表和 php 日期方法来转换它的示例,但我仍然错过了在获取服务器日期后将其转换为网页上的用户时区选择的简单方法。
在本页 http://vkham.com/UTC.html 我找到了一个清晰的指南来了解范围,但我不知道如何连接例如桌子上的“欧洲/罗马”,所以有更清楚的内容吗?
我知道我的服务器的时区(美国/芝加哥),但我仍然不知道如何将其从 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 在所有情况下都像欧洲/罗马吗?还是仅仅因为我的服务器是美国/芝加哥?
解决方案
您可以使用 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 );
?>
不隶属于 StackOverflow