PHP Carbon "month()"方法生成错误的DateTime


PHP Carbon "month()" method generates wrong DateTime

我偶然发现了一件很奇怪的事情。我使用"Carbon"包来生成DateTime对象。

我使用以下代码创建2016年9月开始的DateTime字符串:

Carbon::create()->month(9)

如果我使用Laravel的"dd()"函数输出,我收到以下输出:

Carbon'Carbon {
  +"date": "2016-10-01 10:22:36.000000"
  +"timezone_type": 3
  +"timezone": "Europe/Vienna"
}

返回10月1日,而不是9月1日!每隔一个月就可以。

我也试过这些:

Carbon::now()->month(9)
(new Carbon)->month(9)

但是我得到了同样错误的结果。

有没有人遇到这个错误,或者有人可以尝试一下,告诉我如果你收到相同的输出?还是我做错了什么,尽管我什么都想不起来?

我想问题出在今天的日期,也就是31号。

Carbon::create()->month(9)试图在9月的同一天休假。因为9月没有31号,所以返回10月1日。试一试:

Carbon::create()->day(1)->month(9);

Carbon::create()->startOfMonth()->month(9);

Carbon::create(null, 9);
相关文章: