如何获得本月的第一天的一周中的哪一天?
答
Calendar day= new GregorianCalendar(2010, Calendar.JULY, 1);
int dayOfWeek = day.get(Calendar.DAY_OF_WEEK); // 5=Thursday
答
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();
}
使用这种方法来获得每周的任何天,每月由输入日期每个月开始。
答
乔达时间
使用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);
答
以下方法使用通过传递年份和月份作为参数
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是周四
Calendar.get(日历.DAY_OF_WEEK)? – 2010-07-26 09:09:50