1

strtotime と mktime の両方が間違ったタイムスタンプを出力していて、気が狂いそうです。

次の strtotime('2012-10-09'); を追加すると、

私は1349701200を取得します

2012 年 10 月 8 日月曜日 13:00:00 GMT

MAMPを実行しているローカルホストを使用しています。サーバーのタイムゾーンの問題か何かだと思いますが、その理由や修正方法がわかりません。

何か助けはありますか?

4

1 に答える 1

2

strtotime はデフォルトのタイムゾーンを使用して文字列を解釈します。別のタイムゾーンが必要な場合は、明示的に指定するか、すべての呼び出しに対して変更できます。

<?php

if (date_default_timezone_get()) {
    echo  'date_default_timezone:  ' . date_default_timezone_get()."\n";
}

echo strtotime('2012-10-09')."\n"; # default timezone
echo strtotime('2012-10-09 UTC')."\n";
date_default_timezone_set('UTC');
echo strtotime('2012-10-09')."\n";
?>

出力

date_default_timezone:  Europe/London
1349737200
1349740800
1349740800

POSIX タイムスタンプは、1970-01-01 00:00:00 UTCからの秒数をカウントします。たとえば、ニューヨークの真夜中 (00:00) は、この時期 (同じ POSIX タイムスタンプ) の UTC では 20:00 である可能性があります。ただし、UTC の 00:00 とニューヨークの 00:00 は、異なる時点 (異なる POSIX タイムスタンプ) に対応しています。現地の時計は通常 (大まかに言えば) 太陽に従います。太陽は地球のどこかで輝いています。

于 2012-10-20T06:14:54.090 に答える