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として返される理由を誰かが知っていますか?