Java 周日期计算工具,获取当前第几周,按周数获取周一至周日,按日期获取周一至周日
记一个自己写的工具类:
1.按时间获取当前第几周 getzs
3.按日期获取周一至周日getgetBetweenDates2
4.按年份跟周数获取周一至周日 getgetBetweenDates3
结果:
相关代码:
package com.erp.service.base.hbmis.leaderdynamic.service.impl; import com.alibaba.fastjson.JSONObject; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.WeekFields; import java.util.*; /** * 周日期计算工具类 * @author wy */ public class DayWeekTool { //测试方法 public static void main(String[] args) throws ParseException { JSONObject record =new JSONObject(); System.out.println("日期==2022-03-29"+"周数=="+getzs("2022-03-29")); List<Map<String,Object>> list= getgetBetweenDates3("2022","4",record); for(Map<String,Object> map: list){ String time =map.get("time").toString(); String week =map.get("week").toString(); System.out.println("time:"+time+"===week:"+week); } } //获取周数 public static String getzs(String time){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = format.parse(time); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); System.out.println(); int i=calendar.get(Calendar.WEEK_OF_YEAR); return String.valueOf(i); } //按周数获取 周一到周日 public static List<Map<String,Object>> getgetBetweenDates3(String year,String zs,JSONObject record){ List<Map<String,Object>> dateList =new ArrayList<>(); WeekFields weekFields= WeekFields.ISO; LocalDate now = LocalDate.now(); //输入你想要的年份和周数 LocalDate localDate = now.withYear(Integer.parseInt(year)).with(weekFields.weekOfYear(),Integer.parseInt(zs)-1); LocalDate localDate1 = localDate.with(weekFields.dayOfWeek(), 1L); LocalDate localDate2 = localDate.with(weekFields.dayOfWeek(), 2L); LocalDate localDate3 = localDate.with(weekFields.dayOfWeek(), 3L); LocalDate localDate4 = localDate.with(weekFields.dayOfWeek(), 4L); LocalDate localDate5 = localDate.with(weekFields.dayOfWeek(), 5L); LocalDate localDate6 = localDate.with(weekFields.dayOfWeek(), 6L); LocalDate localDate7 = localDate.with(weekFields.dayOfWeek(), 7L); DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String dateStr1 = localDate1.format(fmt); Map<String,Object> rowmap1=new HashMap<>(); rowmap1.put("time",dateStr1); rowmap1.put("week","星期一"); dateList.add(rowmap1); String dateStr2 = localDate2.format(fmt); Map<String,Object> rowmap2=new HashMap<>(); rowmap2.put("time",dateStr2); rowmap2.put("week","星期二"); dateList.add(rowmap2); String dateStr3 = localDate3.format(fmt); Map<String,Object> rowmap3=new HashMap<>(); rowmap3.put("time",dateStr3); rowmap3.put("week","星期三"); dateList.add(rowmap3); String dateStr4 = localDate4.format(fmt); Map<String,Object> rowmap4=new HashMap<>(); rowmap4.put("time",dateStr4); rowmap4.put("week","星期四"); dateList.add(rowmap4); String dateStr5 = localDate5.format(fmt); Map<String,Object> rowmap5=new HashMap<>(); rowmap5.put("time",dateStr5); rowmap5.put("week","星期五"); dateList.add(rowmap5); String dateStr6 = localDate6.format(fmt); Map<String,Object> rowmap6=new HashMap<>(); rowmap6.put("time",dateStr6); rowmap6.put("week","星期六"); dateList.add(rowmap6); String dateStr7 = localDate7.format(fmt); Map<String,Object> rowmap7=new HashMap<>(); rowmap7.put("time",dateStr7); rowmap7.put("week","星期日"); dateList.add(rowmap7); record.put("startime",dateStr1); record.put("endtime",dateStr7); record.put("Zhous",getzs(dateStr1)); return dateList; } //按日期获取 周一到周日 public static List<Map<String,Object>> getgetBetweenDates2(String strdate,JSONObject record){ List<Map<String,Object>> dateList =new ArrayList<>(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 Calendar cld = Calendar.getInstance(); Date time= null; try { time = df.parse(strdate); } catch (ParseException e) { e.printStackTrace(); } cld.setTime(time); cld.setFirstDayOfWeek(Calendar.MONDAY);//以周一为首日 // cld.setTimeInMillis(System.currentTimeMillis());//当前时间 DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); cld.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//周一 Date day1=cld.getTime(); record.put("startime",sdf.format(day1)); cld.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);//周日 Date day2=cld.getTime(); record.put("endtime",sdf.format(day2)); record.put("Zhous",getzs(sdf.format(day2))); List<String> dateList2 = getBetweenDates(day1, day2); int i=1; for (String date : dateList2) { Map<String,Object> rowmap=new HashMap<>(); rowmap.put("time",date); if(i==1){ rowmap.put("week","星期一"); }else if(i==2){ rowmap.put("week","星期二"); } else if(i==3){ rowmap.put("week","星期三"); }else if(i==4){ rowmap.put("week","星期四"); }else if(i==5){ rowmap.put("week","星期五"); }else if(i==6){ rowmap.put("week","星期六"); }else if(i==7){ rowmap.put("week","星期日"); } dateList.add(rowmap); i++; } return dateList; } /** * 获取日期间日期 * @param start * @param end * @return */ private static List<String> getBetweenDates(Date start, Date end) { DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<String> result = new ArrayList<>(); Calendar tempStart = Calendar.getInstance(); tempStart.setTime(start); Calendar tempEnd = Calendar.getInstance(); tempEnd.setTime(end); tempEnd.add(Calendar.DAY_OF_YEAR, 1); while (tempStart.before(tempEnd)) { result.add(sdf.format(tempStart.getTime())); tempStart.add(Calendar.DAY_OF_YEAR, 1); } return result; } /** * 根据日期获取 星期 (2019-05-06 ——> 星期一) * @param datetime * @return */ public static String dateToWeek(String datetime) { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); Date date; try { date = f.parse(datetime); cal.setTime(date); } catch (ParseException e) { e.printStackTrace(); } //一周的第几天 int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } }