国外一周的开始是从星期日,结束是星期六;而国内一周开始为星期一,结束为星期日,所以分别按两个方式处理:
1,国外日期格式
代码为:
Calendar calendar = new GregorianCalendar(); //获取当前日期
System.out.println(calendar.getTime()); //打印当前日期
calendar.add(Calendar.DAY_OF_WEEK,7-calendar.get(Calendar.DAY_OF_WEEK)+1);
System.out.println(calendar.getTime()); //打印下周日的日期
calendar.add(Calendar.DAY_OF_WEEK, 6);
System.out.println(calendar.getTime()); //打印下周六的日期
代码解释:
Calendar 自身带了很多对日期处理的方法,add方法是将当前日期按照年、月、日向后增加时间。“calendar.get(Calendar.DAY_OF_WEEK)”意思是今天是本周的第几天。“7-calendar.get(Calendar.DAY_OF_WEEK)"意思为本周还剩多少天,再加1表示距离下周星期日还有多少天。calendar.add(Calendar.DAY_OF_WEEK,7-calendar.get(Calendar.DAY_OF_WEEK)+1)意思是在今天的日期上向后推进到下周日,Calendar 会自动进行运算。此时Calendar保存的是下周日的日期,计算出下周六的日期只需再加6即可。
2,国内日期格式
代码为:
Calendar calendar = new GregorianCalendar(); //获取当前日期
System.out.println(calendar.getTime()); //打印当前日期
calendar.add(Calendar.DAY_OF_WEEK,7-calendar.get(Calendar.DAY_OF_WEEK)+2);
System.out.println(calendar.getTime()); //打印下周一的日期
calendar.add(Calendar.DAY_OF_WEEK, 6);
System.out.println(calendar.getTime()); //打印下周日的日期
执行结果:
Mon Feb 25 16:25:01 CST 2013 //当前日期:2月25号 星期1
Mon Mar 04 16:25:01 CST 2013 //下周一日期:3月4号 星期1
Sun Mar 10 16:25:01 CST 2013 //下周日日期:3月10号 星期天
Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
。。。。 不好意思,看错了你的问题。 可以这样:
// 例如今天是25号
Calendar calc = Calendar.getInstance();
System.out.println("[calendar] old day_of_month: " + calc.get(Calendar.DAY_OF_MONTH));
// 下周的这一天就是4号
calc.add(Calendar.WEEK_OF_YEAR, 1);
System.out.println("[calendar] new day_of_month: " + calc.get(Calendar.DAY_OF_MONTH));
int initDay = calc.getFirstDayOfWeek();// 每个星期的第一天根据locale不同而不同
// 下周的第一天是3号(我的机器是按周日算每周第一天的)
calc.set(Calendar.DAY_OF_WEEK, initDay);
System.out.println("[calendar]first day of new week: " + calc.get(Calendar.DAY_OF_MONTH));
// 下周的最后一天(+6)自然就是9号
calc.add(Calendar.DAY_OF_MONTH, 6);
System.out.println("[calendar]last day of new week: " + calc.get(Calendar.DAY_OF_MONTH));
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class T {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd E");
System.out.println(format.format(getFirstDayOfNextWeek()));
System.out.println(format.format(getLastDayOfNextWeek()));
}
public static Date getFirstDayOfNextWeek() {
Calendar calendar = Calendar.getInstance();// 取当前时间
calendar.add(Calendar.WEEK_OF_YEAR, 1);// 增加一个星期
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {// 如果当前不是星期一
calendar.add(Calendar.DATE, -1);// 减一天
}
return calendar.getTime();// 返回Date对象
}
public static Date getLastDayOfNextWeek() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.WEEK_OF_YEAR, 1);
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
calendar.add(Calendar.DATE, 1);
}
return calendar.getTime();
}
}
Calendar cal = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//设置年月日 月份从0开始,日期从1开始
cal.set(2011,1, 22);
//设置小时,分钟,秒 毫秒为0
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
//此处不能省略,更新Calendar时间
cal.getTimeInMillis();
//设置为本周的第一天 即星期日
cal.set(Calendar.DAY_OF_WEEK, 1);
//打印本周的第一天时间,并更新时间
System.out.println(sf.format(cal.getTime()));
//设置时间为下周的第一天,并打印时间
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)+7);
System.out.println(sf.format(cal.getTime()));
//设置时间为下周的最后一天,并打印时间
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)+6);
System.out.println(sf.format(cal.getTime()));
/**
* 得到某年某周的第一天
*
* @param year
* @param week
* @return
*/
public static Date getFirstDayOfWeek(int year, int week) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.setMinimalDaysInFirstWeek(7);
cal.set(Calendar.WEEK_OF_YEAR, week);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.setFirstDayOfWeek(Calendar.SUNDAY);
return getFirstDayOfWeek(cal.getTime());
}
/**
* 得到某年某周的最后一天
*
* @param year
* @param week
* @return
*/
public static Date getLastDayOfWeek(int year, int week) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.setMinimalDaysInFirstWeek(7);
cal.set(Calendar.WEEK_OF_YEAR, week);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.setFirstDayOfWeek(Calendar.SUNDAY);
return getLastDayOfWeek(cal.getTime());
}