PHP 中星期几 (“N”) 的 ISO-8601 数字表示形式使用 date() 函数始终返回 3

发布于 2024-12-08 07:25:41 字数 295 浏览 0 评论 0原文

尝试使用 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

Trying to get the ISO-8601 numeric representation of the day of the week ("N") in PHP using the date() function; however, it keeps returning "3" no matter what day I use with mktime().

<?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));

?>

Output: 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

卖梦商人 2024-12-15 07:25:41

您不应将日期字符串提供给 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 时间戳),即 1970 年 1 月 1 日。此外,发出 E_NOTICE 消息,指出“第 [行] 行 [文件] 中遇到格式错误的数值”。

You shouldn't feed a date string into the second argument for date(), it should be an integer containing the Unix timestamp (the value returned from mktime()). See the date() documentation.

$date = mktime(0, 0, 0, 9, 16, 2011);
var_dump(date('N', $date)); // string(1) "5"

With your original code:

$date = date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) );
print_r(date('N', $date));

The value of $date is "2011-09-16 00:00:00". This is not an integer, and certainly not the Unix timestamp for that date/time; because of that, date() cannot work with the value and reverts back to using the Unix epoch (0 timestamp) which is 1 Jan 1970. Also, an E_NOTICE message stating "A non well formed numeric value encountered in [file] on line [line]" is issued.

梦魇绽荼蘼 2024-12-15 07:25:41

PHP 尝试将 date( "Ymd 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"

PHP is trying to interpret the string generated by date( "Y-m-d H:i:s", mktime(0, 0, 0, 9, 16, 2011) ); as a date, but PHP uses seconds since epoch as a datatime. You can just pass the result of mktime into the second data function call like this:

$dateTime = mktime(0, 0, 0, 9, 16, 2011)
$date = date("Y-m-d H:i:s",  $dateTime);
echo date('N', $dateTime);
// results in "5"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文