2010-07-26 117 views

回答

10
Calendar day= new GregorianCalendar(2010, Calendar.JULY, 1); 
int dayOfWeek = day.get(Calendar.DAY_OF_WEEK); // 5=Thursday 
0
public static Date shiftDayOfWeekinMonth(Date input, int monthsToAdd) { 

Calendar cal = Calendar.getInstance(); 
cal.setTime(input); 

int dayOfWeekInMonth = cal.get(GregorianCalendar.DAY_OF_WEEK_IN_MONTH); 
int month = cal.get(GregorianCalendar.MONTH); 

// month increment 
cal.add(GregorianCalendar.MONTH, monthsToAdd); 
// sets the day of week in month 
cal.set(GregorianCalendar.DAY_OF_WEEK_IN_MONTH, dayOfWeekInMonth); 

//overflow month control 
int currentMonthIndex = (month + monthsToAdd) % 12; 
if (currentMonthIndex != cal.get(GregorianCalendar.MONTH)) { 
    cal.add(GregorianCalendar.DAY_OF_WEEK_IN_MONTH, -1); 
} 

return cal.getTime(); 
} 

使用这种方法来获得每周的任何天,每月由输入日期每个月开始。

0

乔达时间

使用Joda-Time 2.5库,而不是出了名的麻烦java.util.Date和.Calendar类。

星期数由ISO 8601标准定义。星期一是一个,星期天是七个。

DateTimeZone zone = DateTimeZone.forID("America/Montreal"); 
DateTime firstOfMonth = DateTime.now(zone).withDayOfMonth(1).withTimeAtStartOfDay(); 
int dayOfWeekNumber = firstOfMonth.getDayOfWeek(); 
String dayName = DateTimeFormat.forPattern("EEEE").withLocale(Locale.CANADA_FRENCH).print(firstOfMonth); 
0

以下方法使用通过传递年份和月份作为参数

private String getFirstWeekOfTheMonth(int year, int month){ 
    String weeks[] = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday", "Thusday", "Friday", "Sunday"}; 
    Calendar calender = Calendar.getInstance(); 
    calender.set(year, month, 1); 
    return weeks[calender.get(Calendar.DAY_OF_WEEK)-1]; 
} 

例子: -

String currentWeek = getFirstWeekOfTheMonth(2010, Calendar.JULY); 

这里currentWeek是周四