2

このことを考慮。私のサーバーでは、(UTC / GMT)タイムストリングを次のように変換します。

strtotime('Fri Feb 18 21:08:38 +0000 2011')

私のサーバーは

1298063318

私がテストしたすべてのUNIX タイムスタンプ コンバータは同じものを返すので、これは正しいです。逆に、日付ではなくタイムスタンプを挿入すると、上記のようにタイムストリングが返されます。しかし、サーバーでタイムスタンプを変換すると、次のようになります。

date("Y-m-d H:i:s", 1298063318); 

予想とは異なる日付が返されます(「2011年2月18日金曜日21:08:38 +0000」):

2011-02-18 22:08:38

だからそれは1時間オフです。これはおそらく、サーバーのタイムゾーンがヨーロッパ/パリに設定されているため、タイムスタンプがUTC / GTM + 1に変換されるためです。しかし、同じサーバーで実行され、同じタイムゾーンを持つMySQLは、別の結果を返します。

SELECT FROM_UNIXTIME(1298063318) = 2011-02-18 22:08:15

つまり、18秒オフです。誰かが理由を説明できますか?

4

1 に答える 1

4

MySQL の場合、日付関数にうるう秒の修正が使用されます ( MySQL ドキュメント)。PHP 日付関数では、うるう秒は考慮されません。そのため、今では 24 秒の差があります。

問題を解決するために次のことを試すことができます: http://pumka.net/2010/10/24/why-mysql-timestamp-is-24-seconds-different-from-php/

PS。38 - 15 = 23

于 2012-04-08T13:26:08.730 に答える