我正試圖編寫一個程序來計算每個月的賬單金額。考慮到30/360模型。即用於開票的金額基於30天的月份,無論月份是28,30或31天。我正在計算開始日期(成員註冊日期)到結束日期(成員退出日期)之間的天數。每天的費用是25美元這裏是一個小表,例如:在C#中考慮30天月份的天數計算
**日期在(MM/DD)。
開始日期|結束日期|天數|總金額
05/01 | 05/31 | 30 | ($ 25/30)* 30 = 25
05/10 | 05/31 | 22 | ($ 25/30)* 22 = 18.33
05/10 | 06/10 | 22 | ($ 25/30)* 22 = 18.33
05/01 | 05/12 | 12 | ($ 25/30)* 12 = 10
05/06 | 05/15 | 10 | ($三十〇分之二十五)* 10 = 8.33
用於行3 =($三十〇分之二十五)預期的結果* 22 = 18.33
當前結果=($三十〇分之二十五)* 31 = 25.83
使用下面的代碼,除了突出顯示的情況外,我能夠按預期得到結果。我如何在月底前進行限制計算?我的意思是如果開始日期是05/10和結束日期是06/10,則根據天數(22)計算到05/31。
public static void Main(string[] args)
{
var start = new DateTime(2016, 05, 10);
var finish = new DateTime(2016, 05, 28);
var date1 = start.Day == 31 ? 30 : start.Day;
var date2 = finish.Day == 31 && (start.Day == 30 || start.Day == 31) ? 30 : finish.Day;
var actualDaysDiff = (finish - start).TotalDays;
int newDaysDiff = ((360 * (finish.Year - start.Year)) + (30 * (finish.Month - start.Month)) + (date2 - date1))+1;
Console.WriteLine("The number of days are "+ newDaysDiff);
float invoiceAmount = 0;
invoiceAmount = (float)(25.0/30)*newDaysDiff;
Console.WriteLine("Total Invoice for this month : "+ invoiceAmount);
}
例如:我不想計算開始日期和結束日期之間的天數。我想計算從特定月份的開始日期到結束的總費用。如果客戶在5月10日訂閱產品並在6月10日結束訂閱。費用按月收費。因此,客戶是通過計算5月10日至5月31日的成本計算的。其餘的日子計費發生在6月週期等等
你應該指定一個25就是要 –
金額所以問題是,你沒有得到天的時候開始的正確量是05/10和結束是06/10? –
我不明白。如果結束日期在另一個月內,您希望計算到開始日期的月份結束? –