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

如何开发可按月份设定单日费率的日期区间收费PHP计算器

PHP 月度单日费率计算器实现方案

实现思路

    1. 费率配置存储
      首先定义1-12月对应的单日费率映射,可直接用PHP数组存储,键为月份数字(1~12),值为对应单日费用,未明确设置的月份可配置默认费率兜底。示例配置:
    $monthRateMap = [
        1 => 7, // 1月单日7美元
        3 => 12, // 3月单日12美元
        // 其他月份按需补充
        'default' => 10 // 未配置月份默认单日费率
    ];
    
    1. 前端交互实现
      页面内置两个日期选择控件(可直接用HTML原生input[type=date],或自定义日历组件),限制用户选择合法的起止日期范围,用户提交后将两个日期参数传给后端PHP处理。
    1. 日期参数校验
      后端接收到起止日期后,先做合法性校验:
    • 验证日期格式是否符合标准(如Y-m-d),可通过DateTime::createFromFormat方法判断
    • 校验结束日期是否晚于等于开始日期,不合法直接返回错误提示
    1. 核心费用计算逻辑
    // 入参示例:$startDate = '2024-01-15', $endDate = '2024-03-10'
    $start = new DateTime($startDate);
    $end = new DateTime($endDate);
    $end->modify('+1 day'); // 因为DatePeriod默认不包含结束日期,加1天才能统计到结束当天
    $interval = new DateInterval('P1D');
    $dateRange = new DatePeriod($start, $interval, $end);
    
    $totalCost = 0;
    foreach ($dateRange as $date) {
        $month = (int)$date->format('n'); // 获取当前日期对应的月份(1~12不带前导零)
        $dayRate = isset($monthRateMap[$month]) ? $monthRateMap[$month] : $monthRateMap['default'];
        $totalCost += $dayRate;
    }
    
    1. 结果返回
      将计算得到的$totalCost按需求格式化(如保留两位小数、拼接货币单位)后返回前端展示即可。

相关技术参考方向

  • PHP DateTime、DatePeriod、DateInterval系列日期处理类的使用方法
  • 前端日期范围选择控件的参数配置与数据提交逻辑
  • PHP输入参数校验的常用实现方案

内容的提问来源于stack exchange,提问作者Диян Тодоров

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:36:02