尝试使用date()函数获取PHP中星期几(“N”)的ISO-8601数字表示;但是,无论我使用mktime()的哪一天,它都会一直返回“3”。
<?php
$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
//$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 17, 2011) );
print_r(date('N', $date));
?>
输出:3
答案 0 :(得分:4)
您不应该将日期字符串提供给date()
的第二个参数,它应该是一个包含Unix时间戳(从mktime()
返回的值)的整数。请参阅date()
documentation。
$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()
无法使用该值并恢复使用1970年1月1日的Unix纪元(0
时间戳)。此外,E_NOTICE
消息指出“在[line] [line] “[file]中遇到一个非正确形成的数值。
答案 1 :(得分:0)
PHP试图将date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
生成的字符串解释为日期,但PHP将epoch作为数据时间使用秒。您可以将mktime的结果传递给第二个数据函数调用,如下所示:
$dateTime = mktime(0, 0, 0, 9, 16, 2011)
$date = date("Y-m-d H:i:s", $dateTime);
echo date('N', $dateTime);
// results in "5"