我知道这个主题非常广泛,但这些主题中的所有其他解决方案对我没有帮助。
我有这段代码:
function extractMonthsAndCalculate($value, $start_date, $end_date){
$start = Carbon::createFromFormat('Y-m-d',$start_date)->firstOfMonth();
$end = Carbon::createFromFormat('Y-m-d',$end_date)->lastOfMonth();
$test = $end->diffInMonths($start);
for ($i = $start; $i <= $test; $i++) {
$wageYear = Carbon::createFromFormat('Y-m-d',$start_date)->year;
//do calculations
}
}
但我收到此错误
类Carbon \ Carbon的对象无法转换为int
如果我在test
处解析值$test = Carbon::parse($end->diffInMonths($start));
我一直收到此错误
DateTime :: __ construct():无法解析时间字符串
这是什么解决方案?
答案 0 :(得分:0)
您必须更正 条件。原因$i
必须是整数:
function extractMonthsAndCalculate($value, $start_date, $end_date) {
$start = Carbon::createFromFormat('Y-m-d', $start_date)->firstOfMonth();
$end = Carbon::createFromFormat('Y-m-d', $end_date)->lastOfMonth();
$test = $end->diffInMonths($start);
for ($i = $start->month; $i <= $test; $i++) {
$wageYear = Carbon::createFromFormat('Y-m-d', $start_date)->year;
//do calculations
}
}
答案 1 :(得分:0)
您将对象与字符串进行比较并尝试迭代对象;
试试这个解决方案:
for ($i = (int) $start->format('m'); $i <= (int) $test; $i++)
答案 2 :(得分:0)
如果我理解你的问题,你可以这样做:
$diff = $end->diffInMonths($start);
for ($i = 0; $i < $diff; $i++) {
$wageYear = $start->year;
//Do calculations
$start->addMonth();
}
希望这有帮助!