You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何计算近30天收益对比前30天的涨跌百分比

Laravel 近30天收益同比涨跌百分比实现方案

核心实现步骤

  • 先获取上一个30天周期的收益总和,统计区间为距今60天 ~ 距今30天
  • 处理除数为0的边界情况,计算两个周期的收益差值百分比
  • 按展示需求格式化输出涨跌标识与百分比数值

完整代码示例

use Carbon\Carbon;

// 已有的近30天收益统计
$dateFrom = Carbon::now()->subDays(30);
$dateTo = Carbon::now();
$currentMonthly = (float) Transaction::whereBetween('created_at', [$dateFrom, $dateTo])->sum('amount');

// 上一个30天周期收益统计
$prevDateFrom = Carbon::now()->subDays(60);
$prevDateTo = Carbon::now()->subDays(30);
$prevMonthly = (float) Transaction::whereBetween('created_at', [$prevDateFrom, $prevDateTo])->sum('amount');

// 计算涨跌百分比
$isIncrease = true;
$showPercent = '0%';

if ($prevMonthly == 0) {
    // 上一周期无收益时的自定义处理逻辑,可根据业务调整
    if ($currentMonthly > 0) {
        $showPercent = '+100%';
    } elseif ($currentMonthly < 0) {
        $showPercent = '-100%';
        $isIncrease = false;
    }
} else {
    $diff = $currentMonthly - $prevMonthly;
    $percent = round(abs($diff / $prevMonthly) * 100, 1); // 保留1位小数,可修改精度
    if ($diff >= 0) {
        $showPercent = '+' . $percent . '%';
    } else {
        $showPercent = '-' . $percent . '%';
        $isIncrease = false;
    }
}

前端样式适配(Blade模板示例)

可以根据涨跌状态设置不同的文本颜色,实现对应展示效果:

<span class="{{ $isIncrease ? 'text-success' : 'text-danger' }}">
    {{ $showPercent }}
</span>

内容的提问来源于stack exchange,提问作者Mirza Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 07:48:02