by shigemk2

当面は技術的なことしか書かない

mktimeの引数にnullとか0とか文字列を入れてみた

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からスタートしているので、
どういう理由でこういう挙動になるのかイマイチよく分からないのだが、
要するに予期せぬ結果が出るってことだから、
何かしらの救済処置をやらないといけないってことか。