【发布时间】:2017-06-05 06:22:55
【问题描述】:
我发现 strtotime() 有点奇怪。
在不存在的日期,它返回后一天。
$d30= strtotime("2017-06-30");
Echo $d30 ."\n";
Echo date("Y-m-d", $d30)."\n\n"; // 2017-06-30
$d31= strtotime("2017-06-31");
Echo $d31 ."\n";
Echo date("Y-m-d", $d31)."\n\n"; // 2017-07-01
$d32= strtotime("2017-06-32");
Echo $d32 ."\n";
Echo date("Y-m-d", $d32); // 1970-01-01
我明白最后一个。它不返回任何内容,因为它是一个错误。
但是为什么第二个会在 7 月初返回呢?
它是否意味着功能,如果你犯了错误,它会“纠正你”?或者它是 strtotime() 中的一个真正的错误?
【问题讨论】:
-
月 'JUNE' 只有 30 天。所以如果你写 31 PHP 日期函数会自动将其转换为下一个日期。
-
所以它是一个功能?我在手册中找不到任何关于它的内容。
-
值 31 是 strtotime 可接受的值,32 不是
-
为什么会这样?因为这就是他们选择实施修复的方式。如果您阅读 php.net 上的条目,这是一个非常松散的功能。另请参阅他们如何使用“+1 个月”处理 1 月 30 日和 31 日
-
@DaveS 不确定我找到了你提到的正确的那个。你能链接到它吗?发帖人的名字是一个链接