最近项目中做预约系统遇到查询本周,下周的数据情况。记录一下!
/**
* 获取一周的日期数据
*/
@Test
public void getThisWeekDate(){
Calendar cal = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取本周的周一日期
Date date = getThisWeekMonday();
cal.setTime(date);
int day = 0;
try {
for (int i = 0; i <7; i++) {
day = cal.get(Calendar.DATE);
if(i==0){
cal.set(Calendar.DATE, day + i);
}else{
cal.set(Calendar.DATE, day + 1);
}
String dayAfter = dateFormat.format(cal.getTime());
Date dateTime = dateFormat.parse(dayAfter);
System.out.println("本周日期: "+dateFormat.format(dateTime)+" "+getWeek(dateTime));
}
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 获取下周一日期
*/
@Test
public void getNextWeekMonday(){
Calendar cal = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取本周的周一日期
Date date = getThisWeekMonday();
cal.setTime(date);
//获取下周一的日期,-7则是获取上周一日期
cal.add(Calendar.DATE,7);
System.out.println("下周一: "+dateFormat.format(cal.getTime())+" "+getWeek(cal.getTime()));
}
/**
* 获取本周周一的日期(方法一)
*/
private Date getThisWeekMonday2(){
Calendar c = Calendar.getInstance();
c.add(Calendar.WEEK_OF_MONTH, 0);
c.set(Calendar.DAY_OF_WEEK, 2);
return c.getTime();
}
/**
* 获取本周周一的日期(方法二)
*/
public Date getThisWeekMonday() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
System.out.println("今天日期: "+dateFormat.format(cal.getTime())+" "+getWeek(cal.getTime()));
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
System.out.println("本周一: "+dateFormat.format(cal.getTime())+" "+getWeek(cal.getTime()));
return cal.getTime();
}
/**
* 根据日期转变为星期(方法二)
*/
private String getWeek2(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("EEEE", Locale.CHINA);
String week = sdf.format(date);
return week;
}
/**
* 根据日期转变为星期(方法一)
*/
public String getWeek(Date date){
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
大家如果遇到什么问题,欢迎留言交流~~