2016-07-19 6 views
2
StartDate: 2016-05-8 20:16:00; 
EndDate: 2016-05-30 20:16:00; 


    public int saturdaysundaycount(Date d1, Date d2) { 
       Calendar c1 = Calendar.getInstance(); 
       c1.setTime(d1); 

       Calendar c2 = Calendar.getInstance(); 
       c2.setTime(d2); 

       int sundays = 0; 
       int saturday = 0; 

       while (c1.after(c2)) { 
        if (c2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || c2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) 
         sundays++; 
        saturday++; 
        c2.add(Calendar.DATE, 1); 
        c2.add(Calendar.DATE, 1); 
       } 
       System.out.println(sundays); 

       return saturday + sundays; 
      } 

In dieser Funktion versuche ich die Gesamtzahl der Samstage und Sonntage zwischen zwei Daten zu erhalten. Aber wenn ich das Datum passiere, werde ich als Ergebnis Null. Bitte weisen Sie auf den Fehler hin und schlagen Sie Korrekturen vor.Wie kommt man Samstag und Sonntag zwischen zwei Datum in Java

+1

ähnliche Art von Frage beantwortet [hier] (http://stackoverflow.com/questions/4600034/calculate-number-of-weekdays-between-two-dates-in-java). ändere die Logik stattdessen – Amolb

+0

Ich habe versucht, Liebes, ich bin nicht in der Lage zu tun, dass es immer 0 –

+1

if (startCal.get (Calendar.DAY_OF_WEEK) == Calendar.SATURDAY && startCal.get (Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) Ich habe diese Logik angewendet –

Antwort

2

Es ist nicht ratsam vollständige Programm zu schreiben, aber da Sie Mühe, hier ist das, was auf meinem System zu funktionieren scheint und einen Wert von 7 zurück.

public class CountWeekends { 

    public static void main(String[] args){ 

     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
     int count = 0; 
     try { 
      Date d1 = formatter.parse("2016-05-8 20:16:00"); 
      Date d2 = formatter.parse("2016-05-30 20:16:00"); 
      count = saturdaysundaycount(d1,d2); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     System.out.println("Count of Sats & Sundays = "+count); 
    } 

    public static int saturdaysundaycount(Date d1, Date d2) { 
     Calendar c1 = Calendar.getInstance(); 
     c1.setTime(d1); 

     Calendar c2 = Calendar.getInstance(); 
     c2.setTime(d2); 

     int sundays = 0; 
     int saturday = 0; 

     while (! c1.after(c2)) { 
      if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){ 
       saturday++; 
      } 
      if(c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){ 
       sundays++; 
      } 

      c1.add(Calendar.DATE, 1); 
     } 

     System.out.println("Saturday Count = "+saturday); 
     System.out.println("Sunday Count = "+sundays); 
     return saturday + sundays; 
    } 

Logik: Sie müssen Schritt halten start date um einen Tag, bis es end date übertrifft und halten day auf start date überprüfen.

2

Das Problem ist in Ihrem while, mit diesem Stück Code funktioniert gut für mich.

Überprüfen Sie die endDate und startDate, weil ich denke, dass Sie es in der falschen Reihenfolge senden.

while (endDate.after(startDate)) { 
    if (endDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){ 
    sundays++; 
    }else if (endDate.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){ 
    saturday++; 
    } 

    endDate.add(Calendar.DATE, -1); 
} 
+0

Fehler kommt in erhalten MEthod –

0
public static int getNumberofSundays(String d1,String d2) throws Exception{ //object in Date form 
    Date date1=getDate(d1); 
    Date date2=getDate(d2); 

    Calendar c1=Calendar.getInstance(); 
    c1.setTime(date1); 
    Calendar c2=Calendar.getInstance(); 
    c2.setTime(date2); 
    int sundays=0; 
    while(c1.after(c2)){ 
     if(c2.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){ 
      sundays++; 
      c2.add(Calendar.DATE,1); 
     } 
    } 
    System.out.println("number of days between 2 dates"+sundays); 

    return sundays; 
} 
+0

wir müssen hinzufügen Samstag auch nicht nur Sonntag –

+1

Kumpel gleichen Weg zählen Samstag – chandrakant

+0

http://paste.ofcode.org/UZxjmwmfePGtQCxPtevyLu schau, das ist es, aber es funktioniert nicht –

0

Ihr Code ist nicht durch die Tage. Bitte versuchen Sie den folgenden Code. In der while-Schleife durchläuft es alle Tage zwischen dem angegebenen Datum und dem letzten Datum. Dies geschieht, indem in jeder Iteration ein Tag zu c1 hinzugefügt wird, bis c1 nach c2 liegt. Dies gibt die Anzahl von Samstagen und Sonntagen zwischen vorgegebenen Daten einschließlich dieser zwei Tage an.

public static int saturdaysundaycount(Date d1, Date d2) { 
    Calendar c1 = Calendar.getInstance(); 
    c1.setTime(d1); 

    Calendar c2 = Calendar.getInstance(); 
    c2.setTime(d2); 

    int sundays = 0; 
    int saturdays = 0; 

    while (!c1.after(c2)) { 
     SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd-E"); 
     String formatted = format1.format(c1.getTime()); 
     System.out.println("Current Date C1 : " + formatted); 

     if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { 
      sundays++; 
     } else if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { 
      saturdays++; 
     } 
     c1.add(Calendar.DATE, 1); 
    } 

    System.out.println("Sundays : " + sundays); 
    System.out.println("Saturdays : " + saturdays); 

    return saturdays + sundays; 
} 
Verwandte Themen