2012-03-06 13 views
0

私は毎月の継続的な支払い期間を作りたいと思っています。私は開始日である最後の1日の支払い期間を挿入したとします:01-01-2012 12:00:00 enddate: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

2月に何が起こると思いますか(特にうるう年)? –

+0

月の最初の日を取得して検索し、1か月の最終日を取得する方法を見つけることができます。これらの試しに基づいて終了日が最終日よりも1日少なくなります。コンクリートにこだわって、ここに戻ってくることができます! – V4Vendetta

+0

上記の結果は、月ごとに自動的に作成されます。 – Fernando

答えて

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

+0

どういたしまして !!! – Madhu

関連する問題