我偶然发现了一件很奇怪的事情。我使用"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);