0
echo strtotime('2010-09-11 12:15:01');

戻り値: 1284207301

SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')

戻り値: 1284200101

違いはなぜですか?

4

4 に答える 4

3

答えは、strtotime に関する php.net の記事にあります

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

短いバージョン: strtotime はデフォルトでタイムゾーンを使用しますが、UNIX_TIMESTAMP は使用しません。

于 2010-09-11T13:10:09.957 に答える
2

これは通常、PHP と MySQL が異なるタイムゾーンを使用するように設定されていることと、それらが異なるサーバーにある場合にシステム時刻が一致しないことが原因です。

UNIX タイムスタンプは、1970 年 1 月 1 日の午前 0 時 (UTC) の UNIX エポックから経過した秒数であるため、タイムゾーンの違いによってタイムスタンプが異なります。

于 2010-09-11T13:08:45.140 に答える
1

1284207301-1284200101 = 7200→2時間。このような完全に丸められた違いは、バグによるものではなく、タイムゾーンの違いです。ほとんどの場合、1 つは UTC/GMT で、もう 1 つは UTC +/- 2 です。

于 2010-09-11T13:11:08.857 に答える
1

私の推測では、Unix 時間は GMT であり、もう一方はローカル タイムゾーンです。2 つの出力の間には正確に 2 時間の差 (7200/60/60) があります。

于 2010-09-11T13:11:46.077 に答える