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 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];
    }




}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值