0

次のように、php.iniディレクトリにdate.timezone設定を設定しました

date.timezone = "Asia/Kolkata"

次のパラメーターを使用して mktime を実行すると

mktime(0,0,0,10,11,1993);

私が得るタイムスタンプは752907600です

しかし、mktime 関数の前に date_default_timezone_set('Asia/Kolkata'); を付けると、予想される出力タイムスタンプ、つまり 752869800 が得られます

両方のタイムゾーンが同じ場合、出力が異なるのはなぜですか?

- - - - - - - - 編集 - - - - - - - - - - - - -

問題は解決しましたが、なぜそれが発生するのかわかりません

echo date_default_timezone_get().'<br />';
echo mktime(0,0,0,11,10,1993).'<br />';
date_default_timezone_set('Asia/Kolkata');
echo date_default_timezone_get().'<br />';
echo mktime(0,0,0,11,10,1993);

出力

EST5EDT
752907600
Asia/Kolkata
752869800

.ini 設定を正しく設定しましたが、何が問題なのですか?

4

1 に答える 1

0

問題は解決しましたが、なぜそれが発生するのかわかりません

コードで既に見たように、これは timezone issueです。関数はタイムゾーン/オフセットに対応していますmktime。一方、strtotime関数はタイムゾーン オフセットの影響を受けません。time()

常に GMT/UTC 日付を返す必要がある場合はmktime()、 を使用できますgmmktime()

于 2013-09-30T07:56:57.113 に答える