import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class DateFormatUtil { /** * 获取区间月份 */ private static List<String> getMonthBetween(String minDate, String maxDate) { ArrayList<String> result = new ArrayList<String>(); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月 Calendar min = Calendar.getInstance(); Calendar max = Calendar.getInstance(); min.setTime(sdf.parse(minDate)); min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1); max.setTime(sdf.parse(maxDate)); max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2); Calendar curr = min; while (curr.before(max)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.MONTH, 1); } } catch (ParseException e) { e.printStackTrace(); } return result; } /** * 获取区间日期的周和星期几 周从1开始 */ private static List<String> getWeekBetween(String minDate, String maxDate) { ArrayList<String> result = new ArrayList<String>(); Calendar c_begin = new GregorianCalendar(); Calendar c_end = new GregorianCalendar(); String[] min = minDate.split("-"); String[] max = maxDate.split("-"); Integer day = Integer.valueOf(min[2]); c_begin.set(Integer.valueOf(min[0]), Integer.valueOf(min[1]) - 1, Integer.valueOf(min[2])); //获取开始时间是周几 int i = c_begin.get(Calendar.DAY_OF_WEEK)-1; if (i == 2) { day = day - 1; }else if (i==3){ day = day - 2; }else if (i==4){ day = day - 3; }else if (i==5){ day = day - 4; }else if (i==6){ day = day - 5; }else if (i==1){ day =day-1; } c_begin.set(Integer.valueOf(min[0]), Integer.valueOf(min[1]) - 1, day); c_end.set(Integer.valueOf(max[0]), Integer.valueOf(max[1]) - 1, Integer.valueOf(max[2])); int count = 1; c_end.add(Calendar.WEEK_OF_YEAR, 1); //结束日期下滚一周是为了包含最后一天 while (c_begin.before(c_end)) { System.out.println(count + "(年-月-日 , 周) 日期:" + new java.sql.Date(c_begin.getTime().getTime()) + "," + c_begin.get(Calendar.WEEK_OF_YEAR)); System.out.println(count + "(年-周) 日期:" + c_begin.get(Calendar.YEAR) + "-" + c_begin.get(Calendar.WEEK_OF_YEAR)); result.add(c_begin.get(Calendar.YEAR)+"-"+c_begin.get(Calendar.WEEK_OF_YEAR)); if (c_begin.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { count++; } c_begin.add(Calendar.WEEK_OF_YEAR, 1); } return result; } public static String getWeekByYear(String startData) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = format.parse(startData); } catch (ParseException e) { e.printStackTrace(); } Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); return calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.WEEK_OF_YEAR); } /** * 获取日期是周几 */ public static int getWeekNum(String date) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = null; try { date1 = format.parse(date); } catch (ParseException e) { e.printStackTrace(); } String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); cal.setTime(date1); int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; if (week_index < 0) { week_index = 0; } return week_index; } public static void main(String[] args) { List<String> strings = getWeekBetween("2019-11-19", "2020-01-12"); System.out.println(strings); //System.out.println(getWeekByYear("2020-10-25")); System.out.println(getWeekNum("2019-11-19")); } }