2011-12-09 25 views
2

夏時間忘れないで、私は多くの類似の質問があるけど、私は私がまさに必要なものを見つけることができませんでした...を表示し、現在の時刻の時間

だから私は、PHPを使用していると私はしたいですビジターの現在のタイムゾーンにデータベースからのタイムスタンプを表示します。

は、これまでのところ、私は次のことを行っている:

  1. PHPでは、私がある、どこでも$ TIMEを使用します。

    $TIME = time() - date("Z");

    これは、時間を絶対参照である必要があり、 dstなし、そうですか?

  2. 私は(唯一の最初の訪問の時に)ユーザーのタイムゾーンはJavaScriptを使用してオフセットを取得し、数分でそれを格納します。もちろん

    var d = new Date(); var tz = -d.getTimezoneOffset();

    、ユーザーは自分の/を設定することができます彼女のタイムゾーンを別のものにします。

  3. データベースからの日付を表示するとき、私はタイムスタンプに時間の蓄積量を追加します。 $timestamp += $TIMEZONE_OFFSET * 60;

    そして、私は(日付でそれをフォーマット)

これはうまく動作しているようです、しかし、私はそれがdstになるかどうか疑問に思う。

私は、dstに関しては何とか自動的にユーザーのタイムゾーンオフセットを変更すると考えましたが、すべての日付が変更されます(dst期間にもないものも変更されます)。そしてないすべての領域がDSTを使用していますので、私はこれを理解するかどうかは本当に困惑している:すべての

答えて

0

最初の\、time()date()もDSTにdate.timezoneなどを設定INIに依存します。絶対時間の場合は、代わりにgmmktime()gmdate()を使用してください。

タイムゾーンのDSTに関する情報は、たとえばDateTimeZone::getTransitions()で解決できます。

代わりに、サードパーティのサービスを使用することもできます。

0

すべてのタイムスタンプをUTCベースのUnix date()形式で送信します。 は、タイムゾーン、DSTなどから独立しています。 JavaScriptの側では

$php_timestamp = gettimeofday(true); 

:PHP側で

var js_timestamp = new Date(php_timestamp*1000); 

その後、すべてget{FullYear,Month,Date,Hours,...}()to[Locale]{Date,Time,}String()方法は自動的にユーザーの(クライアント)のタイムゾーンに基づいて結果 が得られます。

関連する問題