编程语言
首页 > 编程语言> > php – 根据服务器UTC偏移量和用户UTC偏移量更改当前用户时区

php – 根据服务器UTC偏移量和用户UTC偏移量更改当前用户时区

作者:互联网

我在PHP写一个Twitter的网络服务.当用户登录时,我收到此节点:

<utc_offset>-18000</utc_offset>

我必须更改脚本的时区,以便它适应用户的实时时区.我找到的唯一的php函数是:date_default_timezone_set($timezone_identifier)但它不会让我使用-18000作为$timezone_identifier参数.

那么,我如何根据两个值更改当前用户时区:服务器UTC偏移量和用户UTC偏移量

顺便说一句,这是我得到服务器UTC偏移值的方式:

$this_tz_str = date_default_timezone_get();
$this_tz = new DateTimeZone($this_tz_str);
$now = new DateTime("now", $this_tz);
$offset = $this_tz->getOffset($now);

有任何想法吗?谢谢!

解决方法:

获取当前服务器时间

date_default_timezone_set(date_default_timezone_get());
echo date('Y-m-d H:i:s', time());

欧洲/巴黎的输出(我的服务器设置; UTC 2)

2011-04-12 20:39:43

通过偏移获得用户的时间

$user_offset = '-18000';
date_default_timezone_set('UTC');
$diff = "$user_offset seconds";
if ((substr($diff,0,1) != '+') && (substr($diff,0,1) != '-')) $diff = '+' . $diff;
$usertime = strtotime($diff, time());
echo date('Y-m-d H:i:s', $usertime);

输出UTC-5(厄瓜多尔 – >基多时间无DST),php时区标识符’America / Guayaquil’.

2011-04-12 13:39:43

PHP.net手册:

Timezone offset in seconds. The offset
for timezones west of UTC is always
negative, and for those east of UTC is
always positive. (-43200 through
50400)

标签:php,timezone,utc,datetimeoffset
来源: https://codeday.me/bug/20190630/1339471.html