2012-03-06 55 views
0

我想爲每個月創建一個連續支付週期。假設我爲最後一天的開始日期插入支付週期:01-01-2012 12:00:00結束日期:30:01:2012 11:59:00交易日期:31:01:2012 12:00:00和狀態:OPEN。現在我想要基於以上條目的以下結果即爲每個月創建一個連續支付週期

2. start date : 01-02-2012 12:00:00 enddate : 28:02:2012 11:59:00 Transaction date : 29:02:2012 12:00:00 and status : CLOSED 
3. start date : 01-03-2012 12:00:00 enddate : 30:03:2012 11:59:00 Transaction date : 31:03:2012 12:00:00 and status : OPEN 

並且第一個狀態OPEN變爲CLOSE。這個過程連續自動根據第一項開始,結束和交易日期,請幫我做這件事......

+0

你期望在二月份(特別是在閏年)發生什麼? – 2012-03-06 05:16:46

+0

你可以得到每月的第一天,搜索一下,你會發現如何得到一個月的最後一天,你的結束日期比最後一天少一天,基於這些嘗試的東西,如果你得到卡住在具體的東西,你可以回到這裏! – V4Vendetta 2012-03-06 05:27:41

+0

以上每個月自動創建的結果開始或達到交易日期。 – Fernando 2012-03-06 05:32:00

回答

2

嘗試以下

public class Result 
{ 
    private int _daysInMonth; 
    public DateTime StartDate { get; set; } 
    public DateTime EndDate { get; set; } 
    public DateTime TransactionDate { get; set; } 
    public string Status { get; set; } 

    public ResultCollection Generate(DateTime fromdate, DateTime enddate) 
    { 
     var collection = new ResultCollection(); 
     for (; fromdate < enddate; fromdate = fromdate.AddMonths(1)) 
     { 
      _daysInMonth = DateTime.DaysInMonth(fromdate.Year, fromdate.Month); 
      var res = new Result 
          { 
           StartDate = fromdate, 
           EndDate = fromdate.AddDays(_daysInMonth - 1).AddMinutes(-1), 
           TransactionDate = fromdate.AddDays(_daysInMonth - 1), 
           Status = "Close" 
          }; 
      collection.Add(res); 
     } 
     collection.ElementAt(collection.Count-1).Status = "Open"; 
     return collection; 
    } 
} 

public class ResultCollection : System.Collections.ObjectModel.Collection<Result> 
{ 
} 

呼叫使用

DateTime start = new DateTime(2012, 01, 01); 
DateTime end = new DateTime(2012, 05, 01); 
GridView1.DataSource = new Result().Generate(start, end); 
GridView1.DataBind(); 

我的功能驗證碼希望這可以幫助 !!!

+1

非常感謝你... – Fernando 2012-03-06 08:40:20

+0

不用謝 !!! – Madhu 2012-03-06 09:05:20