Вы не должны вводить строку даты во второй аргумент для date()
, это должно быть целое число, содержащее метку времени Unix (значение, возвращаемое из mktime()
).См. date()
документацию .
$date = mktime(0, 0, 0, 9, 16, 2011);
var_dump(date('N', $date)); // string(1) "5"
С вашим исходным кодом:
$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
print_r(date('N', $date));
Значение $date
равно "2011-09-16 00:00:00"
.Это не целое число и, конечно, не метка времени Unix для этой даты / времени;из-за этого date()
не может работать со значением и возвращается к использованию эпохи Unix (0
timestamp), которая составляет 1 января 1970 года. Кроме того, сообщение E_NOTICE
с указанием " не правильно сформированного числового значениявстречается в [file] в строке [line]".