4

PHPでTwitterWebサービスを作成しています。ユーザーがサインインすると、次のノードを受け取ります。

<utc_offset>-18000</utc_offset>

スクリプトのタイムゾーンを変更して、ユーザーの実際のタイムゾーンに適応させる必要があります。これについて私が見つけた唯一のphp関数はdate_default_timezone_set($ timezone_identifier)ですが、$timezone_identifierパラメーターとして-18000を使用することはできません。

したがって、サーバーUTCオフセットユーザーUTCオフセットの2つの値に基づいて、現在のユーザーのタイムゾーンを変更するにはどうすればよいですか?

ところで、これは私がサーバーの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);

何か案は?ありがとう!

4

2 に答える 2

2

現在のサーバー時間を取得するには

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(エクアドル->キト時間NO DST)、phpタイムゾーン識別子を出力し'America/Guayaquil'ます。

2011-04-12 13:39:43

PHP.netマニュアル:

秒単位のタイムゾーンオフセット。UTCの西のタイムゾーンのオフセットは常に負であり、UTCの東のタイムゾーンのオフセットは常に正です。(-43200から50400)

于 2011-04-12T18:41:18.803 に答える
1

date_default_timezone...関数は、「Africa/Luanda」などの文字列を想定しています。

プログラムでタイムゾーンデータベースを検索して、一致するオフセットを探すことをお勧めします。私が正しく思い出せば、それらはUTCから数分であるため、与えられたオフセットを60で割る必要があります。

于 2011-04-12T18:21:12.137 に答える