0

date と strtotime にイライラする問題があります。

echo date('Y-m-d H:i', strtotime('1970-01-01 00:00:00'));

戻り値:

1970-01-01 01:00:00

私は何を間違っていますか?1970-01-01 02:00:00は正しく出力1970-01-01 02:00されますが、(外国の) 書式設定された日付をタイムスタンプに変換してから、新しい日付形式を出力しようとしています。

この方法ではない場合、それを行う正しい方法は何ですか?

解決済み:私の問題は 1970-01-01 01:00 (GMT+1) を返す無効な日付文字列 (boolean false) であったため、この例は機能します。ケースクローズ

4

1 に答える 1

1

の負のタイムスタンプをサポートしていない Windows を使用しているようですdate

したがって、負の値が返され、 - 負になるとstrtotime('1970-01-01 00:00:00')フォーマットされるため、TZ オフセットに等しいオフセットが得られます。date()0

1970-01-01 02:00:00結果(これstrtotime3600UTC から 1 時間 + 1 時間) であり、この値は正であるため、機能します。

PS:@Mark Ba​​kerが指摘したように-それはずっと前に修正されましたが、Windowsバージョンで提示され、それがケースの唯一の説明です

PPS:質問のコメントによると-すべてが正常に機能しているようです(OPがどのように間違った値を取得したかはわかりません)

于 2012-09-02T22:40:49.353 に答える