LoginSignup
3
2

More than 5 years have passed since last update.

DateTime::createFromFormatの!と|はUnixエポックにはリセットしない

Posted at

DateTime::createFromFormatのフォーマット文字列の!|の説明に「Unix エポックにリセット」と書いてありますが、実はそのタイムゾーンでの1970年1月1日0時0分0秒にリセットされます。

例えば

% php -d date.timezone=Asia/Tokyo -r 'echo(DateTime::createFromFormat("!", "")->format("Y-m-d H:i:s"));'
1970-01-01 00:00:00

となります。説明通りだと1970-01-01 09:00:00になりそうですがそんなことはありません。

もちろんマニュアルの|のところの例に書いてある

Y-m-d| は、文字列をパースした結果から年月日を設定し 時分秒には 0 を設定します。

もちゃんと動きます。

ドキュメントのバグとしてバグレポ(#76569)したんだけど一向に直る気配がないですねー。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2