1 /**
2 * 获取当前日期所在季度的开始日期和结束日期
3 * 季度一年四季, 第一季度:1月-3月, 第二季度:4月-6月, 第三季度:7月-9月, 第四季度:10月-12月
4 * @param isFirst true表示查询本季度开始日期 false表示查询本季度结束日期
5 * @return
6 */
7 public static LocalDate getStartOrEndDayOfQuarter(Boolean isFirst){
8 LocalDate today=LocalDate.now();
9 LocalDate resDate = LocalDate.now();
10 if (today == null) {
11 today = resDate;
12 }
13 Month month = today.getMonth();
14 Month firstMonthOfQuarter = month.firstMonthOfQuarter();
15 Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
16 if (isFirst) {
17 resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
18 } else {
19 resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
20 }
21 return resDate;
22 }
23 //获取当前季度
24 public static String getQuarterByDate(String date) throws ParseException {
25 if(date == ""|| "".equals(date)){
26 return "";
27 }
28 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
29 Date datePar = sdf.parse(date);
30 Calendar calendar = Calendar.getInstance();
31 calendar.setTime(datePar);
32
33 String year = String.valueOf(calendar.get(Calendar.YEAR));
34 int mouth = datePar.getMonth()+1;
35
36 if(mouth>=1 && mouth<=3){
37 return year + "年第一季度";
38 }else if(mouth>=4 && mouth<=6){
39 return year + "年第二季度";
40 }else if(mouth>=7 && mouth<=9){
41 return year + "年第三季度";
42 }else if(mouth>=10 && mouth<=12){
43 return year + "年第四季度";
44 }else{
45 return "";
46 }
47 }
48
49 /**
50 * 获取当期季度的天数
51 * @param cntDateBeg 开始时间
52 * @param cntDateEnd 结束时间
53 * @return
54 */
55 public static List<String> addDates(String cntDateBeg, String cntDateEnd) {
56 List<String> list = new ArrayList<>();
57 String[] dateBegs = cntDateBeg.split("-");
58 String[] dateEnds = cntDateEnd.split("-");
59 Calendar start = Calendar.getInstance();
60 start.set(Integer.valueOf(dateBegs[0]), Integer.valueOf(dateBegs[1]) - 1, Integer.valueOf(dateBegs[2]));
61 Long startTIme = start.getTimeInMillis();
62 Calendar end = Calendar.getInstance();
63 end.set(Integer.valueOf(dateEnds[0]), Integer.valueOf(dateEnds[1]) - 1, Integer.valueOf(dateEnds[2]));
64 Long endTime = end.getTimeInMillis();
65 Long oneDay = 1000 * 60 * 60 * 24l;
66 Long time = startTIme;
67 while (time <= endTime) {
68 Date d = new Date(time);
69 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
70 time += oneDay;
71 list.add(df.format(d));
72 }
73 return list;
74 }