$contract_start_date = strtotime('2016-01-01');
$contract_end_date = strtotime('2016-12-01');
$contract_start_date_last_date = date('t', $contract_start_date);
echo "contract last date of any start month: ".$contract_start_date_last_date."
";
$contract_end_date_last_date = date('t', $contract_end_date);
echo "contract last date of any end month: ".$contract_end_date_last_date."
";
$no_of_months = 1 + (date("Y", $contract_end_date) - date("Y", $contract_start_date)) * 12;
$no_of_months += date("m", $contract_end_date) - date("m", $contract_start_date);
$no_of_days = $contract_start_date_last_date - date("d", $contract_start_date);
echo $no_of_days."
";
echo $no_of_months."
";
$total_contract_value = 1000;
$no_of_bookings = 1;
$no_of_records = ($no_of_months/$no_of_bookings);
echo $no_of_records."
";
$contract_value = ($total_contract_value/$no_of_records);
echo $contract_value."
";
$initial_contract_value_for_first_month = ($contract_value/$no_of_days);
echo $initial_contract_value_for_first_month."
";
for($i = 0; $i < $no_of_records; $i++){
$proceed = false;
$calculated_records = intval($i * $no_of_bookings);
echo $calculated_records."
";
$contract_date = strtotime("+".$calculated_records." months", $contract_start_date);
echo date('Y-m-d', $contract_date)."     ".$contract_value."
";
}
2016-01-01 83.333333333333
2016-02-01 83.333333333333
2016-03-01 83.333333333333
2016-04-01 83.333333333333
2016-05-01 83.333333333333
2016-06-01 83.333333333333
2016-07-01 83.333333333333
2016-08-01 83.333333333333
2016-09-01 83.333333333333
2016-10-01 83.333333333333
2016-11-01 83.333333333333
2016-12-01 83.333333333333
現在,我要的是如果合同起始日期是不是在第一次的任何一個月的開始,那麼我來計算同月的剩餘,並得到其他的結果一樣:
輸出我在尋找:
2016-01-15 83.333333333333
2016-02-01 83.333333333333
2016-03-01 83.333333333333
2016-04-01 83.333333333333
2016-05-01 83.333333333333
2016-06-01 83.333333333333
2016-07-01 83.333333333333
2016-08-01 83.333333333333
2016-09-01 83.333333333333
2016-10-01 83.333333333333
2016-11-01 83.333333333333
2016-12-01 83.333333333333
所以第一DAT e(2016-01-15)應計算15個月到最後一個日期的日期,其他日期應按照上面顯示的順序進行。請人給一個建議,我已經找到一種方法通過執行以下代碼插入到第15天值:
$one_month_contract_value = ($contract_value/$contract_start_date_last_date);
echo $one_month_contract_value."
";
$initial_contract_value_for_first_month = ($one_month_contract_value*$no_of_days);
echo $initial_contract_value_for_first_month."
";
這給了我第一個月的合同價值,我可以直接插入到這個數據庫中。現在我怎麼才能繼續計算第一次約會的其他月份。
這是輸出現在我得到:
2016-01-15 43.010752688172
2016-01-01 83.333333333333
2016-02-01 83.333333333333
2016-03-01 83.333333333333
2016-04-01 83.333333333333
2016-05-01 83.333333333333
2016-06-01 83.333333333333
2016-07-01 83.333333333333
2016-08-01 83.333333333333
2016-09-01 83.333333333333
2016-10-01 83.333333333333
2016-11-01 83.333333333333
,總價值超過合同金額較小。
+0
我建議在foreach裏動態地計算$ no_of_days。這段代碼太複雜了,無法提供示例。我建議你在功能上分開它,它肯定會幫助你找到解決方案。 –
+0
我寫了開始日期和開始日期的月份之間的數據之間的數據的幾行,請檢查我的問題 –