1

PHPで以下を実行した場合:

echo mktime(0,0,0,1,1,1970);

戻り値は-3600であり、予想どおり0ではありません。

サーバーは英国を拠点としており、現在は9月21日(つまりBSTサマータイム)であり(これがエポックタイムスタンプに影響することはないと思いますが)、php.infoによると「デフォルトのタイムゾーンヨーロッパ/ロンドン」です。

次のように夏時間フラグを設定すると、次のようになります。

echo mktime(0,0,0,1,1,1970,0); (つまり、正しいDSTフラグ、DST /BSTではなく1月1日として0)は-3600を返します

echo mktime(0,0,0,1,1,1970,1); (誤ったフラグ-DSTとして1月1日を設定)は-7200を返します

echo mktime(0,0,0,1,1,1970、-1); (つまり、DSTフラグが設定されていません-決定はPHPに任されています)は-3600を返します

エポックが0ではなく-3600として返される理由を誰かが知っていますか?

4

2 に答える 2

5

1970年1月1日の英国夏時間の真夜中だったとき、グリニッジ標準時の1時間から真夜中まででした。代わりに、タイムゾーンをUTCに設定してみてください。

date_default_timezone_set('UTC'); // or just change php.ini
于 2010-09-21T18:00:55.007 に答える
1

mktime()現在のタイムゾーンに基づいています。GMTに基づいてタイムスタンプを作成する場合は、gmmktime()関数を使用する必要があります。

gmmktime(0,0,0,1,1,1970)

ideoneのコード


資力 :

于 2010-09-21T18:04:58.917 に答える