簡體   English   中英

如果我認為每個月只有第 30 天,如何獲得兩個日期之間的差異天數

[英]how to get diff days between two dates if I consider every month is day 30 only

$start_date = Carbon::parse(date('Y-m-d', strtotime('2022-08-17')));
$end_date = Carbon::parse(date('Y-m-d', strtotime('2022-09-01')));
$diff = $start_date->diffInDays($end_date);

這兩個日期之間的天數是15 ,因為 aug 是 31 天,但在我的情況下,我認為每個月都是 30 天,所以差異應該是14

Carbon 有一個daysInMonth屬性,它返回給定日期的天數。 因此,您可以使用它並執行以下操作:

public function diffInDays($start_date, $end_date)
{
    $diff = $start_date->diffInDays($end_date);

    $daysInMonths = [$start_date->daysInMonth, $end_date->daysInMonth];

    foreach ($daysInMonths as $count) {
        if ($count >= 31) {
            $diff--;
        }
    }

    return $diff;
}

然后你會使用上面的如下:

$start_date = \Carbon\Carbon::parse(date('Y-m-d', strtotime('2022-08-17')));
$end_date = \Carbon\Carbon::parse(date('Y-m-d', strtotime('2022-09-01')));

$diff = $this->diffInDays($start_date, $end_date);

這可以改進,但原理按需要工作。 結果是14

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM