c# - Date Range Calculation .Any Suggestions? -


i need calculate date ranges.

i have 3 date ranges:

  1. 25 july 11 - 10 oct 11
  2. 05 aug 11 - 05 oct 11
  3. 20 aug 11 - 08 nov 11

    i need create new membership valid periods can before , after

    what way this?

    code example

           public enum membershiptype        {           gym=1,           magazine=2,           hotel=3        }        class program        {           static void main()           {              // during  1st aug 2011 , 20th oct 2011 membership payment must stopped              var stoppaymentstartdate  =  new datetime(2011,08,1);              var stoppaymentenddate    =  new datetime(2011,10,20);                var gymmembership = new membership{membershiptype=membershiptype.gym, startdate = new datetime(2011, 07, 25), enddate = new datetime(2011, 10, 10)};              var magazinemembership = new membership{membershiptype = membershiptype.magazine,startdate = new datetime(2011, 08, 5),enddate = new datetime(2011, 10, 5)};              var hotelmembership = new membership{membershiptype = membershiptype.hotel,startdate = new datetime(2011, 08, 20),enddate = new datetime(2011, 11, 8)};               //how can wanted result below:              //???               //wanted list of result follows:              var gymmembershipresult = new result{membershiptype = membershiptype.gym,startdate = new datetime(2011, 10, 10),enddate = new datetime(2011, 10, 20)};              var magazinemembershipresultone = new result { membershiptype = membershiptype.magazine, startdate = new datetime(2011, 08, 01), enddate = new datetime(2011, 08,05) };              var magazinemembershipresulttwo = new result { membershiptype = membershiptype.magazine, startdate = new datetime(2011, 10, 05), enddate = new datetime(2011, 10, 20) };              var hotelmembershipresult = new result { membershiptype = membershiptype.hotel, startdate = new datetime(2011, 08, 01), enddate = new datetime(2011, 08, 20) };            }        }        public class result        {           public datetime startdate { get; set; }           public datetime enddate { get; set; }           public membershiptype membershiptype { get; set; }        }        public class membership        {           public datetime startdate { get; set; }           public datetime enddate { get; set; }           public membershiptype membershiptype { get; set; }        }     } 

class program {     static void main(string[] args)     {         datetime stoppaymentstartdate = new datetime(2011, 08, 1);         datetime stoppaymentenddate = new datetime(2011, 10, 20);          membershipperiod gymmembership = new membershipperiod          {              membershiptype = membershiptype.gym,              startdate = new datetime(2011, 07, 25),              enddate = new datetime(2011, 10, 10)          };          membershipperiod magazinemembership = new membershipperiod          {              membershiptype = membershiptype.magazine,              startdate = new datetime(2011, 08, 5),              enddate = new datetime(2011, 10, 5)          };          membershipperiod hotelmembership = new membershipperiod         {              membershiptype = membershiptype.hotel,              startdate = new datetime(2011, 08, 20),              enddate = new datetime(2011, 11, 8)          };          list<membershipperiod> resultsgym = getresultsforperiod(gymmembership, stoppaymentstartdate, stoppaymentenddate);         list<membershipperiod> resultsmagazine = getresultsforperiod(magazinemembership, stoppaymentstartdate, stoppaymentenddate);         list<membershipperiod> resultshotel = getresultsforperiod(hotelmembership, stoppaymentstartdate, stoppaymentenddate);     }      private static list<membershipperiod> getresultsforperiod(membershipperiod period, datetime stoppaymentstartdate, datetime stoppaymentenddate)     {         list<datetime> datestokeep = new list<datetime>();          (datetime date = stoppaymentstartdate.date; date <= stoppaymentenddate.date; date = date.adddays(1))         {             if (date <= period.startdate.date || date >= period.enddate.date)             {                 datestokeep.add(date);             }         }          list<membershipperiod> results = new list<membershipperiod>();         membershipperiod newperiod = null;          (int = 0; < datestokeep.count; i++)         {             if (newperiod == null)             {                 newperiod = new membershipperiod();                 newperiod.membershiptype = period.membershiptype;                 newperiod.startdate = datestokeep[i];             }              if (i == datestokeep.count - 1 || (datestokeep[i + 1] - datestokeep[i]).days > 1)             {                 newperiod.enddate = datestokeep[i];                 results.add(newperiod);                 newperiod = null;             }         }          return results;     } }  public enum membershiptype  {      gym = 1,      magazine = 2,      hotel = 3  }  public class membershipperiod  {      public datetime startdate      {          get;          set;      }       public datetime enddate      {          get;          set;      }       public membershiptype membershiptype      {          get;          set;      }  }  

Comments

Popular posts from this blog

Javascript line number mapping -

c# - Is it possible to remove an existing registration from Autofac container builder? -

php - Mysql PK and FK char(36) vs int(10) -