2016-05-22 3 views
0

Ich habe eine Tabelle, die presentation diese Werte bestehen:Liste von Daten zwischen zwei Daten nur für bestimmte Tage dynamisch

ID  DAY   START  END  STARTDATE  ENDDATE 
622 Monday  12:00:00 02:00:00 01-05-2016  04-06-2016 
623 Tuesday 12:00:00 02:00:00 01-05-2016  04-06-2016 
624 Wednesday 08:00:00 10:00:00 01-05-2016  04-06-2016 
625 Thursday 10:00:00 12:00:00 01-05-2016  04-06-2016 

Also im Grunde mein STARTDATE ist 2016.01.05 bis ENDDATE 2016.04.06

ich dachte, wie wie diese Daten zwischen diesen beiden Terminen zur Liste:

Calendar cal = Calendar.getInstance(); 
       cal.setTime(presentationDateStart); 
       while (cal.getTime().before(presentationDateEnd)) { 
        cal.add(Calendar.DATE,1); 
        System.out.println("poop "+cal.getTime()); 

       } 

dies wird jedoch alle möglichen Termine Liste in diesem Format: Sun May 08 00:00:00 SGT 2016

Wie kann ich nur bestimmte Daten basierend auf DAY in meiner presentation Tabelle dynamisch bekommen? Die Werte von presentation Tabelle sind immer dynamisch.

UPDATE:

Ich möchte nur Liste der Daten, die nur von Tag in meinem presentation Tabelle besteht. Das Format spielt für mich (noch) keine Rolle.

Erwartete Ergebnisse:

Mon May 02 00:00:00 SGT 2016 
Tue May 03 00:00:00 SGT 2016 
Wed May 04 00:00:00 SGT 2016 
Thu May 05 00:00:00 SGT 2016 
Mon May 09 00:00:00 SGT 2016 
Tue May 10 00:00:00 SGT 2016 
Wed May 11 00:00:00 SGT 2016 
Thu May 12 00:00:00 SGT 2016 so on until end of the date 

UPDATE

Dies ist meine JAVA-Code:

  String presentationID = null; 
      String presentationDay = null; 
      Date presentationStart = null; 
      Date presentationEnd = null; 
      Date presentationDateStart = null; 
      Date presentationDateEnd = null; 
      String presentationFreeID = null; 

      List list1 = new ArrayList() ; 
      list1 = GenerateScheduleDAO.getPresentation(); 
      PresentationBean[] presentation = new PresentationBean[list1.size()]; 
      for(int c = 0 ; c < list1.size() ; c++){ 

       presentation[c] = (PresentationBean) list1.get(c); 

       presentationID = presentation[c].getPresentationID(); 
       presentationDay = presentation[c].getPresentationDay(); 
       presentationStart = presentation[c].getPresentationStart(); 
       presentationEnd = presentation[c].getPresentationEnd(); 
       presentationDateStart = presentation[c].getPresentationDateStart(); 
       presentationDateEnd = presentation[c].getPresentationDateEnd(); 
       presentationFreeID = presentation[c].getFreeID(); 

       System.out.println(" pFID11: "+ presentationFreeID +" pID: "+ presentationID +" pDay: "+ presentationDay+ " PStart: "+ presentationStart+" pEnd: "+ presentationEnd+" DStart: "+presentationDateStart+" EDate: "+ presentationDateEnd); 

       Calendar cal = Calendar.getInstance(); 
       cal.setTime(presentationDateStart); 
       while (cal.getTime().before(presentationDateEnd)) { 
        cal.add(Calendar.DATE,1); 
        System.out.println("poop "+cal.getTime()); 

       } 

      }  

In db, DAY in VARCHAR2 gespeichert ist.

+2

Diese ist nicht klar genug, um beantwortet zu werden. Bitte geben Sie einige Beispiele dafür an, was Sie meinen, mit genügend Kontext, dass ein eindeutiger Satz von Regeln beschrieben werden kann. –

+0

Die Frage ist nicht klar. Übrigens können Sie immer einen Scheck für den Tag im Ausgabeformat hinzufügen. – phraniiac

+0

Meinst du mit DAY_OF_WEEK? @ direwolf7 – user6308605

Antwort

2

Sie können Calendar.DAY_OF_WEEK verwenden Sie den Tag-Index zu erhalten, und print (enthalten) werden nur die Tage, die Sie brauchen

Calendar cal = Calendar.getInstance(); 
cal.setTime(presentationDateStart); 
while (cal.getTime().before(presentationDateEnd)) { 
    cal.add(Calendar.DATE,1); 
    if(cal.get(Calendar.DAY_OF_WEEK) == 2 || cal.get(Calendar.DAY_OF_WEEK) == 3 || cal.get(Calendar.DAY_OF_WEEK) == 4 || cal.get(Calendar.DAY_OF_WEEK) == 5){ 
     //2, 3 ,4 ,5 are the index of days mon-Thu 
     //constants available too : Calendar.MONDAY ... 
     System.out.println("poop "+cal.getTime()); 
    } 
}//date is before endDate 

wenn Sie eine dynamische Quelle für Tag-Index haben, können Sie diese Liste ein Vergleich DAY_OF_WEEK Wert dagegen (Array oder Arraylist)?

für weitere Informationen in Bezug auf DAY_OF_WEEKcheck docs

EDIT: i erwähnt bereits, dass Sie hier einen dynamischen Tag-Index Array verwenden können, ist eine Probe von dem, was ich meine:

ArrayList<Integer> dayIndex = getDayIndex();// could be from DB, API... it contains day index (1,4,6) the days you want to include 
if(dayIndex .contains(cal.get(Calendar.DAY_OF_WEEK)){ 
    System.out.println("poop "+cal.getTime()); 
} 
+0

Danke @yazan. Ich verstehe deine Codes perfekt. Aber ich denke, das ist hart codiert. Wie ich bereits erwähnt habe, ist die Präsentationstabelle dynamisch. Die Tage können sich ändern. Es ist nicht unbedingt Montag, Dienstag, Mittwoch und Donnerstag. Die angegebenen Werte waren nur ein Beispiel ... – user6308605

+0

@ user6308605 meine Antwort schon. Sie können ein Array von Tagesindex (dynamisch) zur Verfügung stellen, um Tage basierend auf theat – Yazan

+0

@ user6308605 zu filtern. Dies ist die richtige Antwort, abhängig davon, wie Sie die Präsentationstabelle in Java bekommen. Sie müssen uns mitteilen, wie wir auf diese Informationen zugreifen können. –

Verwandte Themen