Java 周日期计算工具,获取当前第几周,按周数获取周一至周日,按日期获取周一至周日

记一个自己写的工具类:

1.按时间获取当前第几周 getzs

3.按日期获取周一至周日getgetBetweenDates2

4.按年份跟周数获取周一至周日 getgetBetweenDates3

结果:

相关代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
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];
    }
  
  
  
  
}

  

posted @   潇湘客2  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示