PHP 32bit版でタイムスタンプを取るメモ
32bit やめたい。ローカル環境でいかに逃げるかという話なので、本番では使わない。
date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->getTimestamp()
は 32bit 環境だと false が返ってくる。悲しい。
date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U')
は 32bit でも、タイムスタンプとして正しい文字列が返ってくる。
(int) date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U')
は 32bit だと、2038-01-19 12:14:07 と同じ数値(要するにintの最大値)が返ってくる。
date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->getTimestamp()
は 32bit 環境だと false が返ってくる。悲しい。
date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U')
は 32bit でも、タイムスタンプとして正しい文字列が返ってくる。
(int) date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U')
は 32bit だと、2038-01-19 12:14:07 と同じ数値(要するにintの最大値)が返ってくる。
php -r "var_dump(date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->getTimestamp());"
bool(false)
php -r "var_dump(date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U'));"
string(10) "2147483648"
php -r "var_dump((int) date_create_from_format('Y-m-d H:i:s', '2038-01-19 12:14:08')->format('U'));"
int(2147483647)
php -r "var_dump(PHP_INT_MAX);"
int(2147483647)
php -r "echo PHP_INT_SIZE;"
4
by tokage-shippo
| 2016-01-04 15:09
