2016-07-19 25 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; 
      } 

この機能では、2つの日付の間の土曜日と日曜日の合計数を取得しようとしています。しかし、私が日付を渡すと、結果としてゼロになる。間違いを指摘し、修正を提案してください。土曜日と日曜日をJavaで2つの日付の間で取得する方法

+1

質問の同様の種類は[こちら](http://stackoverflow.com/questions/4600034/calculate-number-of-weekdays-between-two-dates-in-java)答えています。代わりにロジックを変更してください – Amolb

+0

私はそれを行うことができませんよ、私はそれを行うことができませんでした0 –

+1

if(startCal.get(Calendar.DAY_OF_WEEK)== Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK)== Calendar.SUNDAY)私はこの論理を適用しました –

答えて

2

完全なプログラムを書くことはお勧めできませんが、あなたが力を入れているので、ここに私のシステムで作業して7の値を返すしているように見えるものです。

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; 
    } 

ロジック:あなたはそれがend dateを超える まで1日で増分start dateを維持し、start datedayをチェックしておく必要があります。

2

問題はwhileにあります。このコードは問題なく動作しています。

endDatestartDateを間違った順序で送信していると思われますので、ご確認ください。

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

エラーは、我々はまた、土曜日を追加する必要があります方法 –

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

を取得中に来ているだけでなく、日曜日 –

+1

男と同じよう回数土曜日 – chandrakant

+0

D: –

0

コードはループしません。次のコードを試してください。 whileループでは、与えられた拳の日付と最後の日付の間のすべての日をループします。これは、c1がc2の後になるまで、各反復でc1に1日を追加することによって行います。これにより、2日間を含む所定の日付間の土曜日と日曜日の数が与えられます。

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; 
} 
関連する問題