如何在两周内获得碳的差异

问题描述 投票:0回答:2

在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 ...

哪种方法有效?

谢谢!

laravel php-carbon
2个回答
0
投票

由于一周是7天,所以您可以使用Carbon的diffInDays()方法(查看该期间有多少天)并将结果除以7,然后可以将其转换为int


0
投票

因为使用$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);


© www.soinside.com 2019 - 2024. All rights reserved.