mktimeの引数にnullとか0とか文字列が入っていたら、
どういう挙動になるのだろうか。試してみた。
<?php $date = date("Y-m-d", mktime(0, 0, 0, NULL, NULL, 2012)); echo "1. " . $date . "\n"; $date = date("Y-m-d", mktime(0, 0, 0, NULL, 1, NULL)); echo "2. " . $date . "\n"; $date = date("Y-m-d", mktime(0, 0, 0, 1, NULL, NULL)); echo "3. " . $date . "\n"; $date = date("Y-m-d", mktime(0, 0, 0, NULL, NULL, NULL)); echo "4. " . $date . "\n"; $date = date("Y-m-d", mktime(0, 0, 0, 0, 0, 0)); echo "5. " . $date . "\n"; $date = date("Y-m-d", mktime(NULL, NULL, NULL, NULL, NULL, NULL)); echo "6. " . $date . "\n"; $date = date("Y-m-d", mktime()); echo "7. " . $date . "\n"; $date = date("Y-m-d", mktime(0, 0, 0, 1, 'hoge', 2012)); echo "8. " . $date . "\n";
結果
1. 2011-11-30
2. 1999-12-01
3. 1999-12-31
4. 1999-11-30
5. 1999-11-30
6. 1999-11-30
7. 2012-03-09
PHP Warning: mktime() expects parameter 5 to be long, string given in /Users/shigemk2/qr_87535CB.php on line 24
PHP Stack trace:
PHP 1. {main}() /Users/shigemk2/qr_87535CB.php:0
PHP 2. mktime() /Users/shigemk2/qr_87535CB.php:24
8. 1970-01-01
デフォルトでは1970-01-01からスタートしているので、
どういう理由でこういう挙動になるのかイマイチよく分からないのだが、
要するに予期せぬ結果が出るってことだから、
何かしらの救済処置をやらないといけないってことか。