在laravel 6应用中,我想在几周内获得两个日期之间的差异:如果日期中断一周,则获得值> 0
我看到diffInWeeks方法写在这里:https://carbon.nesbot.com/docs/#api-week
我有2个约会:
$startDate = Carbon::createFromTimestamp(strtotime($eventItem['at_time']));//->format($date_format);
\Log::info('$startDate ::');
\Log::info(print_r($startDate, true));
$offset_x= $startDate->dayOfWeek;
$endDate = $startDate->add($eventItem['duration'] . ' minutes');
\Log::info('-1 $endDate::' . print_r($endDate, true));
$diff_in_weeks= $startDate->diffInWeeks($endDate);
\Log::info('-3 $diff_in_weeks ::' . print_r($diff_in_weeks, true));
在日志中:
[2020-04-20 06:16:56] local.INFO: $startDate ::
[2020-04-20 06:16:56] local.INFO: Carbon\Carbon Object
(
[date] => 2018-02-01 09:08:39.000000
[timezone_type] => 3
[timezone] => UTC
)
[2020-04-20 06:16:56] local.INFO: -1 $endDate::Carbon\Carbon Object
(
[date] => 2018-02-22 04:28:39.000000
[timezone_type] => 3
[timezone] => UTC
)
[2020-04-20 06:16:56] local.INFO: -3 $diff_in_weeks ::0
但是在上面的输出中,我看到相差21天$ diff_in_weeks == 0
我试图替换日期:
$diff_in_weeks= $endDate->diffInWeeks($startDate);
反正有0 ...
哪种方法有效?
谢谢!
由于一周是7天,所以您可以使用Carbon的diffInDays()方法(查看该期间有多少天)并将结果除以7,然后可以将其转换为int
因为使用$endDate = $startDate->add($eventItem['duration'] . ' minutes');
开始日期($ startDate)也会更改其值,并且从该行开始,开始日期具有新值,实际上开始日期等于结束日期。因此,您的解决方案是:
$startDate = Carbon::createFromTimestamp(strtotime($eventItem['at_time']));
$endDate = Carbon::createFromTimestamp(strtotime($eventItem['at_time']))->add($eventItem['duration'] . ' minutes');
$diff_in_weeks= $startDate->diffInWeeks($endDate);