私たちは、他のプレイヤーに挑戦するための試合時間を選ぶことができるバトルシステムを持っています。一致を作成するには、ユーザーが日付を選択する必要があります。現在、ユーザーはドロップダウンリストから日、時、分、午後/午後を選択します。ユーザーが5/20/2012 @ 1PMを選択すると、システムは1日の開始から時間と分を追加します。ユーザーは、AMまたはPMを選択した場合PHPの日付とタイムスタンプ付きのアドバイス
$time = strtotime('today', $inputdate);
$time = $time + $hours + $minutes;
$hours
変化の値を:ここで私が話しているかのより良い理解を得るために迅速なサンプルです。かなり基本的です。
開始された人がタイムゾーンの問題を抱えるまで、すべてうまくいきました。たとえば、プレーヤーAが1:PMで試合を作成した場合、プレーヤーBは試合が1:PMで開始するのを見ますが、彼/彼女は異なるタイムゾーンを持つでしょう!
問題は、私はこの問題を知っていないということです:/
私はタイムゾーンの問題を修正する方法がわかりません。私はすべてが一緒に落ちることを期待して機能を作り出していますが、運はありません。
- ユーザープロファイルは、タイムゾーンのオプションがあります。私が持っているもの
。
- 生のタイムスタンプを取得し、ユーザーのタイムゾーンに基づいてフォーマットされた時刻を返す関数です。
- タイムスタンプを取得し、ユーザーのタイムゾーンに基づいて別のタイムスタンプ に変換する関数。
私は紛失しています。問題を解決できないようですが、コードすることはできますが、今は論理的ではないと思います。私はこれを書くために1時間かかりましたし、私は自分がそれを働かせる方法を自分で分からないので、それを説明することを試みます。アドバイスありがとうございます。
IはUTC-5にタイムスタンプを変換する機能を必要とする:データベース内
function input_date($timestamp)
{
global $vbulletin;
$timestamp = (int)$timestamp;
if (strlen((string)$timestamp) == 10)
{
$hour = 3600.00;
$offset = $vbulletin->userinfo['timezoneoffset'];//sample -8
$ds = (int)$vbulletin->userinfo['dstonoff'];//DST
$fluff = $hour*($offset+5.00);
$timestamp = $timestamp+$fluff+($ds*$hour);
return $timestamp;//return timestamp in UTC-5 format..
}
else
{
return 0;
}
}
すべてのデータを一貫性のあるタイムゾーンに格納します(UTCは移動先にする必要があります)。次に、ユーザーのタイムゾーンを表示する時点で、ユーザーのタイムゾーンとの間で計算を行います。 – cmbuckley
別のタイムゾーンとして保存すると違いがありますか? – user962449
いいえ、あなたはゆっくりと狂ってしまうかもしれません:-) UNIXタイムスタンプ(つまりstrtotimeの結果)を保存すると、タイムゾーン情報なしで保存しています。 – cmbuckley