我想知道如何显示开始日期和结束日期之差的天数。例如:
使用 Carbon 的 diffInDays()
$diff = $start_date->diffInDays($end_date)
现在,假设 $start_date 和 $end_end 相差 30 天。我们都知道,当使用模运算(%)时,我们可以显示两者相差1个月,因为30可以被30整除,这与相差7天是一样的,我们可以将其显示为1周。
但是当差异例如是 35 天时,35%30 = 5,我们还剩下 5 天。我的问题是如何将其显示为简单的“35 天”。这是我到目前为止所做的。
$start_date = Carbon::parse($job->start_date);
$end_date = Carbon::parse($job->end_date)
$diff = $start_date->diffInDays($end_date);
if ($diff%30 == 0) {
//show $result as 1 Month
} else if ($diff%7 == 0) {
//show $result as 1 Week
} else {
//show $result as $diff
}
dd($result)
当您正在处理 Carbon 的实例并希望以人类可读的格式显示时间戳时,您可以执行如下操作:
$start_date = Carbon::parse($job->start_date);
$end_date = Carbon::parse($job->end_date);
$start_date->diffForHumans($end_date, true); // 1 week
根据时间戳,它将返回诸如:3 秒前、1 周前、1 个月前等信息。
编辑: 第二个参数 i
true
删除了返回字符串的“ago”部分,因此如果没有它,返回值将是“1 周前”而不是“1 周”
终于开始工作了,这就是我所做的
$start_date = Carbon::parse('2023-08-18');
$end_date = Carbon::parse('2023-09-15';
// Calculate the differences
$months = $start_date ->floatDiffInMonths($end_date );
$weeks = $start_date ->floatDiffInWeeks($end_date );
if (fmod($months, 1) == floatval(0)) {
dd($months.' '.'Month/s');
} elseif (fmod($weeks, 1) == floatval(0)) {
dd($weeks.' '.'Week/s');
} else {
$days = $start_date ->diffInDays($end_date );
dd($days .' '.'Day/s');
}
结果将是“4周/秒”