2

このデータを使用できます。

Timezone of local time as integer: 8.75 (which is UTC+8.75)
1) 2012-09-04 03:15:03
2) 2012-09-03 18:30:03 (GMT)
3) 1346728503
4) 1346697003 (GMT)

さて、夏時間、1970年から2038年の時間制限など、考えられるすべての例外を考慮して、現地時間(1)をGMT時間(2)(およびその逆)に変換する方法を考えています。とにかく重要ですか?

PHP関数は主に、時間を変換するために現地時間のタイムゾーンを指定することを許可していません-サーバーの現地時間を使用しますが、これは私が望んでいるものではありません(また、変更したくありません)。私は明らかに8.75*60*601346728503 (3) から引くことができますが、これは何があっても正確な値を生成しますか?

4

3 に答える 3

3

まず、タイムスタンプを受け入れる PHP 関数はタイムゾーンを受け入れません。UNIX のタイムスタンプはタイムゾーンを認識していないか、考慮していないためです。

入力すると、2012 年 9 月 3 日月曜日の 15:30:10 で、現在は夏時間 (「夏時間」) が適用されています。UTC タイム ゾーンでは、19:30:10 に相当します。いずれにせよ、これは UNIX タイムスタンプ (time_t値) 1,346,700,610 です。地球の表面上の位置に応じて、その瞬間の現地時間は、9 月 3 日の午前 7 時 30 分 10 分から 9 月 4 日の午前 9 時 30 分 10 秒までの 26 時間の範囲内のどこかに収まる可能性があります (2012-09- 03T07:30:10-12:00 から 2012-09-04T09:30:10+14:00)。しかし、あなたの地元のレーベルが何であっても、問題の時間は UNIX と PHP に対して 1,346,700,610 です。

タイムゾーンに基づいて異なるtime_t値を計算しようとしたようですが、計算されません。タイム ゾーン オフセットはtime_t、変更されない値に適用されることはありません。それらは人間が読める表現にのみ適用されます。

可能な限り、独自のタイム ゾーン変換を試みないでください。ルールは変わる傾向にあります。現在、私の現地時間は UTC より 4 時間早いです。数か月後には 5 時間早くなります。さらに、その変更がいつ発生するかに関するルールは、今年は 5 年前とは異なります。そのため、変換しようとしている特定のタイム スタンプの値に応じて、さまざまなルールを適用する必要があります。

ライブラリ関数を使用します。

time_t時間の文字列表現を値に変換するには、 を使用しますstrtotime。文字列にタイム ゾーン参照が含まれている場合は、strtotimeが変換を行います。そうでない場合は、date_default_timezone_setコニーが提案したように、を使用して、文字列を解釈するときに使用するタイムゾーンを PHP に伝えることができます。

値を文字列に変換するにはtime_t、 を使用dateして「ローカル」時間 (つまり、 で設定されたタイム ゾーンに基づく時間date_default_timezone_set。 でそのタイム ゾーンが何であるかを PHP に問い合わせることができますdate_default_timezone_get) を取得するかgmdate、UTC を取得します。

于 2012-09-03T19:40:06.820 に答える
1

gmdate()GMTで日付/時刻を取得しgmstrftime()、特定の日付/時刻文字列から変換するために、すでに組み込まれています。

または、timezone_offset_get() を使用して手動で行うこともできます。

于 2012-09-03T19:54:19.307 に答える
0

これを探していますか?

date_default_timezone_set('America/Denver');

この機能で動作するタイムゾーンの完全なリストについては、ここをクリックしてください

于 2012-09-03T19:23:36.610 に答える