记一个自己写的工具类:
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 hejinfeng
*/
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];
}
}