Php 如何在计算日期之间的差异后为每个日期分配价格?(日期差异)

Php 如何在计算日期之间的差异后为每个日期分配价格?(日期差异),php,datediff,Php,Datediff,我使用以下代码(基于此)计算日期之间的差异: <?php $date1 = '2012-03-29'; $date2 = '2012-04-02'; $datetime1 = date_create($date1); $datetime2 = date_create($date2); $interval = date_diff($datetime1, $datetime2); echo $interval->format('%a days'); ?> 差别是4天。三月有固

我使用以下代码(基于此)计算日期之间的差异:

<?php
$date1 = '2012-03-29';
$date2 = '2012-04-02';
$datetime1 = date_create($date1);
$datetime2 = date_create($date2);
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%a days');
?>

差别是4天。三月有固定价格(30欧元/天),四月有固定价格(40欧元/天)。 有没有办法把整个价格加起来?离三月底还有三天,四月底还有两天?如何正确添加它们?
任何帮助都将不胜感激。谢谢。

从日期中提取月份,如下所示:

SELECT MONTH('8/14/04') as "Month";
对于“2012-03-29”和“2012-04-02”之间的每个日期,然后相应地更新表格。
在这种情况下,您希望将总和相加,然后使用存储过程-声明初始化为零的变量“sum”,并使用开关大小写进行相加,如:
case'04'然后sum+=30,case'03'然后sum+=20
。或者,您也可以在计算过程中使用聚合函数。

对于您的确切示例,这是有效的:

$date1 = '2012-03-29';
$dateBoundary = substr($date1, 0, 8).date('t', strtotime($date1));
$date2 = '2012-04-02';
$marchPrice = 30;
$aprilPrice = 40;
$datetime1 = date_create($date1);
$datetime1Boundary = date_create($dateBoundary);
$datetime2 = date_create($date2);
$interval1 = date_diff($datetime1, $datetime1Boundary);
$interval2 = date_diff($datetime1Boundary, $datetime2);
$totalPrice = ($interval1->format('%d') * $marchPrice) + ($interval2->format('%d') * $aprilPrice);
echo number_format($totalPrice, 2);

当然,你可以将想法外推到跨越多个月的时期。

简要说明实现目标结果的逻辑

  • 保存几个月的价目表数组
  • 找出日期之间的月差
  • 在该月的循环中,取该月最后一天的日差,并与数组中相应的价格相乘
  • 在循环内,将所有这些计算相加为一个总量变量

  • 请参阅mktime()和Date()函数

    Yes这将按预期工作。那么,如果一个月分为两个时期会发生什么呢。例如,3月1日至15日为20欧元,从16日至月底为30欧元。我是否应该使用用例(切换中断)?您可以将边界设置为月中,并根据需要更改价格乘数。因此,我应该如何编辑边界以将月份划分为两个期间?更改为
    $dateBoundary='2012-03-15'非常感谢您的帮助。我将尝试根据我的需要进行调整,并发布结果。