【发布时间】:2011-03-20 23:51:40
【问题描述】:
2010 年 7 月 1 日对应一个星期四,我如何以编程方式获取星期四的值。
【问题讨论】:
-
Calendar.get(Calendar.DAY_OF_WEEK)?
标签: java
2010 年 7 月 1 日对应一个星期四,我如何以编程方式获取星期四的值。
【问题讨论】:
标签: java
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);
当前周是星期四
【讨论】: