-1

尝试使用 date() 函数在 PHP 中获取 ISO-8601 星期几(“N”)的数字表示;但是,无论我在哪一天使用 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

4

2 回答 2

4

您不应该将日期字符串输入到 for 的第二个参数中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()无法使用该值并恢复使用01970 年 1 月 1 日的 Unix 纪元(时间戳)。此外,一条E_NOTICE消息指出“在 [line] 行 [file] 中遇到的格式不正确的数值”是发布。

于 2011-10-04T19:08:42.770 回答
0

PHP 试图将生成的字符串解释date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );为日期,但 PHP 使用自纪元以来的秒数作为数据时间。您可以将 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"
于 2011-10-04T19:12:54.687 回答