2012-03-06 51 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