java 如何取得下周一和下周日的日期

如题所述

import java.text.*;
import java.util.*;

public class PrintThisMonday{
public static void main(String[] argv)throws Exception{
for(int i=1; i<11; i++){
String strDate = String.format("2012-12-0%d", i);
Date date = str2Date(strDate);
Date dateSunDay = getSunday(date);
Date dateMonday = getMonday(date);
System.out.println(String.format("日期 %tY-%<tm-%<td %<ta 周日是:%tY-%<tm-%<td %<ta 周一是:%tY-%<tm-%<td %<ta", date, dateSunDay, dateMonday) );
}
}
//注:周日是一周的开始
public static Date getMonday(Date date)throws Exception{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.DAY_OF_WEEK);
if(week>2){
cal.add(Calendar.DAY_OF_MONTH,-(week-2)+7);
}else{
cal.add(Calendar.DAY_OF_MONTH,2-week+7);
}
return cal.getTime();
}
//注:周日是一周的开始
public static Date getSunday(Date date)throws Exception{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.DAY_OF_WEEK);
if(week>1){
cal.add(Calendar.DAY_OF_MONTH,-(week-1)+7);
}else{
cal.add(Calendar.DAY_OF_MONTH,1-week+7);
}
return cal.getTime();
}

static SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
static Date str2Date(String s){
try{
return fmt.parse(s);
}catch(Exception ex){
ex.printStackTrace();
return null;
}
}
}

日期 2012-12-01 星期六 周日是:2012-12-02 星期日 周一是:2012-12-03 星期一
日期 2012-12-02 星期日 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-03 星期一 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-04 星期二 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-05 星期三 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-06 星期四 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-07 星期五 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-08 星期六 周日是:2012-12-09 星期日 周一是:2012-12-10 星期一
日期 2012-12-09 星期日 周日是:2012-12-16 星期日 周一是:2012-12-17 星期一
日期 2012-12-10 星期一 周日是:2012-12-16 星期日 周一是:2012-12-17 星期一
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-07
public static List<Date> dateToWeek(Date mdate){
int b=mdate.getDay();
Date fdate ;
List <Date> list = new ArrayList();
Long fTime=mdate.getTime()-b*24*3600000;
for(int a=0;a<8;a++){
fdate= new Date();
fdate.setTime(fTime+(a*24*3600000));
list.add(a, fdate);
}
return list;
}
调用这个方法 你传入当前日期 就能获得 下一周内的所有天数的一个List,然后再list里取周一和周日就OK了追问

穿进去2012-12-07
看看结果
2012/12/02
2012/12/03
2012/12/04
2012/12/05
2012/12/06
2012/12/07
2012/12/08
2012/12/09
全是这周的日期 还带个上周周日

第2个回答  2012-12-07
public class Test{
public static void main(String[] args) {
SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=getSunday(new Date());
}
catch (Exception e) {
e.printStackTrace();
}
List dateList=getAfterDateList();
for(int i=0;i<dateList.size();i++){
Date dd=(Date)dateList.get(i);
System.out.println(fmt.format(dd));
}
}
public static List getAfterDateList(){
List dateList=new ArrayList();
Calendar calendar=Calendar.getInstance();
Date date;
try {
date = getSunday(calendar.getTime());
calendar.setTime(date);
for(int i=1;i<=7;i++){
calendar.add(Calendar.DATE, 1);
dateList.add(calendar.getTime());
}
}
catch (Exception e) {
e.printStackTrace();
}

return dateList;

}
public static Date getSunday(Date date)throws Exception{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week = cal.get(Calendar.DAY_OF_WEEK);
if(week>1){
cal.add(Calendar.DAY_OF_MONTH,-(week-1)+7);
}else{
cal.add(Calendar.DAY_OF_MONTH,1-week+7);
}
return cal.getTime();
}
}
第3个回答  2012-12-07
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = "2012-01-30";
Calendar cal = Calendar.getInstance();
try {
Date da = sdf.parse(dateStr);
cal.add(Calendar.DATE, 7);
Date date = cal.getTime();
String dates = sdf.format(date);
System.out.println(dates);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

经测试通过,至于取得任意日期的下周时间正在测试~_~
相似回答