2012-03-28 141 views

回答

8

最簡單的方法是隻遍歷一個月中的所有日子,並檢查每個星期中的每一天。例如:

// This takes a 1-based month, e.g. January=1. If you want to use a 0-based 
// month, remove the "- 1" later on. 
public int countWeekendDays(int year, int month) { 
    Calendar calendar = Calendar.getInstance(); 
    // Note that month is 0-based in calendar, bizarrely. 
    calendar.set(year, month - 1, 1); 
    int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 

    int count = 0; 
    for (int day = 1; day <= daysInMonth; day++) { 
     calendar.set(year, month - 1, day); 
     int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); 
     if (dayOfWeek == Calendar.SUNDAY || dayOfweek == Calendar.SATURDAY) { 
      count++; 
      // Or do whatever you need to with the result. 
     } 
    } 
    return count; 
} 

絕對相信有這樣做的更有效的方法 - 但是這就是我下手,優化當我發現它的速度太慢。

請注意,如果你能使用Joda Time,將讓您的生活輕鬆了許多......

+0

感謝您的回覆 – Venkat 2012-03-29 04:35:16

+0

感謝您的代碼。 。 – 2017-11-28 07:36:32

1

試試這個:在以前的答案

import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Sundays { 
    public static void main(String[] args) { 
     int year = 2012; 

     // put the month you want 
     int month = Calendar.JANUARY; 

     Calendar cal = new GregorianCalendar(year, month, 1); 
     do { 
      int day = cal.get(Calendar.DAY_OF_WEEK); 
      if (day == Calendar.SATURDAY || day == Calendar.SUNDAY) { 
       System.out.println(cal.get(Calendar.DAY_OF_MONTH)); 
      } 
      cal.add(Calendar.DAY_OF_YEAR, 1); 
     } while (cal.get(Calendar.MONTH) == month); 
    } 
} 
+0

感謝您的回覆 – Venkat 2012-03-29 04:50:15

1

基地,我有一個小的修改 當你找到第一個星期六和星期天時,你可以簡單地增加7天,直到月份改變。

+0

感謝您的合作 – Venkat 2012-03-29 04:50:32

+0

如果您認爲我的回答是好的,您是否可以提供讚賞? – Bear 2012-03-29 07:52:40

0

請經過這個方法,我面對很多最後我創造了我自己的。

public static int getDayDiff(String dateFrom, String dateTo){ // DD/MM/YYYY 
    Timestamp tDtF = getTimestampDDmmYYYY(dateFrom);//returning timestamp from/DD/MM/YYYY 
    Timestamp tDtT = getTimestampDDmmYYYY(dateTo); 
    Calendar dtF = new GregorianCalendar(); 
    Calendar dtT = new GregorianCalendar(); 
    dtF.setTimeInMillis(tDtF.getTime()); 
    dtT.setTimeInMillis(tDtT.getTime()); 
    int count = 0; 
    while(dtF.before(dtT)){ 
     count++; 
     dtF.add(Calendar.DAY_OF_YEAR, 1); 
    } 
    return count; 
} 

public static int countDateSatOrSun(String dateFrom, String dateTo){//DD/MM/YYYY 
    Timestamp tDtF = getTimestampDDmmYYYY(dateFrom);//returning timestamp from/DD/MM/YYYY 
    Timestamp tDtT = getTimestampDDmmYYYY(dateTo); 
    Calendar dtF = new GregorianCalendar(); 
    Calendar dtT = new GregorianCalendar(); 
    dtF.setTimeInMillis(tDtF.getTime()); 
    dtT.setTimeInMillis(tDtT.getTime()); 
    int count = 0; 
    while(dtF.before(dtT)){ 
     if((dtF.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY| dtF.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)) 
       count++; 
     dtF.add(Calendar.DAY_OF_YEAR, 1); 
    } 
    return count; 
} 

它會給你確切的結果。

相關問題