我正在编写范围查询,并且我正在传递$("#date_range").change(function(){});
以根据fetch_date
时间戳从数据库表中提取内容。
我正在尝试查找一个月的所有记录,但只要我尝试以下操作,变量created_at
就会不断变化:
$fetch_date
为什么 //$fetch_date is a carbon instance and is equal to the month the user selected
//ie: Carbon {#221 ▼
// +"date": "2016-07-01 00:00:00.000000"
//Create the next_month
$next_month = $fetch_date->addMonth();
//Format next_month as a string
$next_month = $next_month->format('Y-m-d');
//Format fetch_date as a string
$fetch_date = $fetch_date->format('Y-m-d');
dd($fetch_date);
//This now gives me 2016-08-01 - why?
会发生变化?我基本上试图将fetch_date
保留为当前月份,将$fetch_date
保持为下个月的开始。
我猜这有一个非常简单的原因,我只是在俯视。
答案 0 :(得分:1)
因为调用addMonth
方法会产生副作用。
如果你看看Carbon的source,你会发现所有addMonth
正在做的是调用addMonths
,其值为1,而这又是只需拨打DateTime::modify
即可。它没有在文档中明确说明,但从示例中可以看出,调用该方法会修改存储的时间值:
示例#1 DateTime :: modify()示例
<?php
$date = new DateTime('2006-12-12');
$date->modify('+1 day');
echo $date->format('Y-m-d');
?>
为避免这种情况,请保留一份时间副本并修改:
$also_fetch_date = clone $fetch_date;
$next_month = $also_fetch_date->addMonth();
// ...
答案 1 :(得分:0)
似乎你要为fetch_date变量添加一个月。
试试这个:
$next_month = Carbon::createFromFormat('Y-m-d', $fetch_date->format('Y-m-d'));
$next_month->addMonth();
dd($next_month->format('Y-m-d'));
看一下Carbon的文档:http://carbon.nesbot.com/docs/ 也许会帮到你