2012-03-29 14 views
0

私は日付の差を計算する(このhttp://goo.gl/5HhSxに基づいて)次のコードを使用しています:日付の差を計算した後、各日付に価格を割り当てる方法は? (date_diff)

<?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 days.Marchは、固定価格(30€/日)と4月を持っています別のものがある(40ユーロ/日)。 価格を合計する方法はありますか?行進の終わりまで3日間、そして4月からもう2日間?どうすればそれらを正しく追加できますか? ご協力いただければ幸いです。ありがとう。

答えて

0

この作品:

$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); 

あなたはもちろん、複数ヶ月に及ぶ期間のアイデアを推定することができます。

+0

機能はmktime()と日付を参照してください。したがって、1ヶ月を2つの期間に分割するとどうなりますか。例えば3月1日から15日までは20€、16日からは月末まで30€です。ケース(スイッチブレイク)を使うべきですか? –

+0

境界を中間月として設定し、必要に応じて価格の乗数を変更することができます。 – Ing

+0

したがって、2つの期間で月を分割するには境界を編集する必要がありますか? –

0

エキス、このような日付のうち月:「2012-03-29」と「2012-04-02」とそれに応じてテーブルを更新する間の各日付の

SELECT MONTH('8/14/04') as "Month"; 

。 この場合、合計を加算し、ストアドプロシージャを使用して、変数 'sum'をゼロに初期化し、CASE '04' then sum+=30 , CASE '03' then sum+=20のようなスイッチの場合を追加します。また、計算には集計関数を使用することもできます。あなたの正確な例えば

0

目標結果を達成するための簡単なロジック。

  1. 日付の間の数ヶ月の違いを見つける
  2. 、ヶ月価格表の配列を保管してください。
  3. 月のループでは、その月の最終日と日差をとり、配列の対応する価格を掛けます。
  4. ループの内部では、この合計を総額変数に合計します。

()が期待通りはいこの作品

関連する問題