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

时间:2016-10-31 09:27:48

标签: php datetime php-carbon

我偶然发现了一些非常奇怪的东西。我使用“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)

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

是否有其他人遇到此错误或有人可以尝试一下并告诉我您是否收到相同的输出?或者我只是做错了什么,即使我什么都想不出来?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我猜这个问题是今天的第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);