datetime - Check date range vs. some other date ranges for missing days -


here want do: got date range e.g. 03.04.2013 23.04.2013 - that's main range.

now have possibility create own time ranges (e.g. 04.04.2013 09.04.2013 , 11.04.2013 23.04.2013). have cover whole main range, every day of main range (excluding weekens) needs corresponding day in own time ranges.

my plan create array main range. check each day of own time ranges against main range. if there accordance, remove day main range. in end, if ok, there emtpy array, because days covered own time ranges. if not, days not covered still in main range , work them (in example: 03.04.2013, 10.04.2013)

does have better idea solve problem? notesdatetimeranges?

i add dates sorted collection , "pirate algorithm". left, right , if of looks fails can stop (unless want find missing dates).

off head (you might need massage final list store value back):

var absenctsince:notesdatetime; //start date - stored in notesitem var enddate:notesdatetime; // return, in notes or today var wfdoc:notesdocument = docapplication.getdocument(); var responsecds:notesdocumentcollection = wfdoc.getresponses(); var docresponse:notesdocument; var nextresponse:notesdocument;  //get date, limits function - if there return information, limit, else today absenctsince = wfdoc.getdatetimevalue("absentsince") ; if (wfdoc.hasitem("returninformationdat")) {     enddate = wfdoc.getdatetimevalue("returninformationdat"); } else {     enddate = session.createdatetime("today"); }  //get days between 2 dates - pure java! var datelist:java.util.list = getworkdaylist(absenctsince.tojavadate(), enddate.tojavadate());  // looping once through reponse documents var docresponse = responsecds.getfirstdocument(); while (docresponse != null) {     nextresponse = responsecds.getnextdocument(docresponse);     var cdvalidsince:notesdatetime = docresponse.getdatetimevalue("cdvalidsince");     var cdvalidtill:notesdatetime = docresponse.getdatetimevalue("cdvalidtill");     // need days in range     var removedates:java.util.list = getworkdaylist(cdvalidsince.tojavadate(),cdvalidtill.tojavadate());     datelist.removeall(removedates);     docresponse.recycle();     docresponse = nextresponse;   }    // both docs null - nothing recycle left // have uncovered dates left in datelist  docapplication.replaceitemvalue("opendates", datelist);  // cleanup try {  absenctsince.recycle();  enddate.recyle();  wfdoc.recycle();  responsecds.recycle();  } catch (e) { dbar.error(e); }  function getworkdaylist(startdate, enddate) { var dates:java.util.list = new java.util.arraylist(); var calendar:java.util.calendar = new java.util.gregoriancalendar();     calendar.settime(startdate);     while (calendar.gettime().before(enddate)) {    var workday = calendar.get(calendar.day_of_week);    if (workday != calendar.saturday && workday != calendar.sunday) {         var result = calendar.gettime();             dates.add(result);    }      calendar.add(java.util.calendar.date, 1);    }    return dates;    } 

Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -