package src.main.test.com.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class WeekTest {
public static void main(String[] args) {
String a=dateToWeek("2021-07-18");
System.out.println(a);
}
/**
* 获取指定时间段内,特定星期几的日期字符串列表
* @param begin 开始日期 格式为:2012/12/12
* @param end 结束日期 格式为:2012/12/12
* @param week 要选择的星期 为本周的第几天,以星期日为 本周的第“1”天
* @return 日期字符串列表
*/
public static List getMeetingDate(String begin, String end, String[] week) {
String beginStr = begin.replaceAll("\\/", "-");
String endStr = end.replaceAll("\\/", "-");
List list = new ArrayList();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);
Calendar beginDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
try {
beginDate.setTime(dateFormat.parse(beginStr));
endDate.setTime(dateFormat.parse(endStr));
} catch (ParseException e) {
e.printStackTrace();
}
//获取指定日历的副本
Calendar date = (Calendar)beginDate.clone();
while(date.before(endDate)) {
//获取日期所在周的第几天
int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);
for(int i = 0; i < week.length; i++) {
if(dayOfWeek == Integer.parseInt(week[i])) {
String str = dateFormat.format(date.getTime());
list.add(str);
}
}
//日期的后一天
date.add(Calendar.DAY_OF_MONTH, 1);
}
return list;
}
/**
* 将日期转换为周几
*/
public static String dateToWeek(String datetime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; //可以其他的表现形式
Calendar cal = Calendar.getInstance();// 获取指定时间
Date date;
try {
date = sdf.parse(datetime);
cal.setTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
return weekDays[w];
}
}
输出:
星期日