6

strtotime()同じ日付がパラメーターとして指定されているにもかかわらず、PHP が異なるタイムゾーンで異なる結果を返す理由がわかりません。誰か答えを知っていますか? 私も知りたいのですが、異なるタイムゾーンで同じ結果が得られる別の関数を使用して、同様のタスク (a を to に簡単に変換して計算すること) を実行できますかdatetime?int

編集:

例: を使用する場合strtotime('2011-09-19 00:00:00')、 と の差を秒単位で返すだけでよいのではない'January 1 1970 00:00:00'でしょ'2011-09-19 00:00:00'うか? ここでタイムゾーンが問題になるのはなぜですか? そして、タイムゾーンの問題なしに違いだけを与えるものを手に入れることはできますか?

4

6 に答える 6

7

つまり、Unixエポック値はGMTで考慮されるため、タイムゾーンが考慮されます。

広い意味で2011-09-19 00:00:00、バングラデシュはほぼ6時間後2011-09-19 00:00:00にGMTゾーンになります。このギャップのため21600、同じ日付がBDに表示されるときに、GMTゾーンでさらに数秒が経過しました。

計算はGMTに関して行われる21600ため、実際の差を取得するには、これらの秒を追加する必要があります。

于 2011-09-04T20:13:02.770 に答える
6

strtotimeタイムゾーンが考慮されるため、異なるタイムゾーンで異なる結果が得られます...

strtotimeのマニュアルから:

この関数は、英語の日付形式を含む文字列が与えられることを想定しており、その形式をUnixタイムスタンプ(1970年1月1日00:00:00 UTCからの秒数)に解析しようとします。

この関数は、TZ環境変数(使用可能な場合)を使用してタイムスタンプを計算します。PHP 5.1.0以降、すべての日付/時刻関数で使用されるタイムゾーンを定義する簡単な方法があります。そのプロセスは、date_default_timezone_get()機能ページで説明されています。

をご覧くださいmktime()

PHP 5.1以降、またはを呼び出す前にdate_default_timezone_setを使用できます。mktimestrtotime

于 2011-09-03T18:59:35.690 に答える
1

PHPマニュアルから:

この関数は、TZ環境変数(使用可能な場合)を使用してタイムスタンプを計算します。PHP 5.1.0以降、すべての日付/時刻関数で使用されるタイムゾーンを定義する簡単な方法があります。このプロセスは、date_default_timezone_get()関数ページで説明されています。

http://php.net/manual/en/function.strtotime.php

于 2011-09-03T19:00:19.730 に答える
1

日付/時刻関数を呼び出す前に使用date_default_timezone_setして、作業するタイムゾーンを選択します。

http://www.php.net/manual/en/function.date-default-timezone-set.php

于 2011-09-03T19:00:36.487 に答える
1

PHPドキュメントからstrtotime

この関数は、TZ環境変数(使用可能な場合)を使用してタイムスタンプを計算します。PHP 5.1.0以降、すべての日付/時刻関数で使用されるタイムゾーンを定義する簡単な方法があります。このプロセスは、date_default_timezone_get()関数ページで説明されています。

独自のタイムゾーンを設定してみてください。

于 2011-09-03T19:00:37.380 に答える
0

おそらく、各 PHP プログラマーは、この関数によって、PHP が実際に日付と時刻の関数でどのように機能するかを本当に理解したいと思うことが 1 回あると思います。

次のようなことを試みると、この関数はおかしいです...エラー...たとえば、この瞬間が 2012 年 7 月 11 日 13:00:00 (2012-07-11 13:00:00) であるとします。 strtotime を試して、その日のまったく同じ瞬間を見つけますが、明日は次のようになります。

$x = strtotime('2012-07-12 13:00:00');

$y = strtotime('+1 Day');

$z = $x-$y;

上記の最初の 2 行の $x と $y は、分と秒のカウントを無視しても同じものを返しませんが、サーバーがGMTが-5時間である米国ですが、GMTが+2時間である夏のベルリンからブラウザがこの関数を呼び出します...LOLこれで、phpがこの関数でどのように機能するかがわかります;)

于 2012-06-29T01:41:34.567 に答える