kongdeqiang
2023-03-02 ee83188936c8ac306144f6c8cd119b6d7574dfc6
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
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
package com.boying.util;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;
 
public class DateUtilOther {
 
    public static String DateToString(Date date,String format){
        if(!StringUtil.isNullOrEmpty(format)){
            SimpleDateFormat f = new SimpleDateFormat(format);
            String sDate = f.format(date);
            return sDate;
        }
        SimpleDateFormat f = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
        String sDate = f.format(date);
        return sDate;
    }
 
    public static Date stringToDate(String date,String format) throws ParseException {
        if(!StringUtil.isNullOrEmpty(format)){
            SimpleDateFormat f = new SimpleDateFormat(format);
            return f.parse(date);
        }
        SimpleDateFormat f = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
        return f.parse(date);
    }
 
    public static LocalDateTime stringToLocalDate(String date,String format) throws ParseException {
        ZoneId zoneId = ZoneId.systemDefault();
        if(!StringUtil.isNullOrEmpty(format)){
            SimpleDateFormat f = new SimpleDateFormat(format);
            LocalDateTime.ofInstant(f.parse(date).toInstant(), zoneId);
        }
        SimpleDateFormat f = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
        return LocalDateTime.ofInstant(f.parse(date).toInstant(), zoneId);
    }
 
 
    public static Date getYearFirst(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }
 
    /**
     * 获取某年最后一天日期
     * @param year 年份
     * @return Date
     */
    public static Date getYearLast(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        Date currYearLast = calendar.getTime();
 
        return currYearLast;
    }
 
    /**
     * 获取指定年月的第一天
     * @param year
     * @param month
     * @return
     */
    public static Date getFirstDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR, year);
        //设置月份
        cal.set(Calendar.MONTH, month-1);
        //获取某月最小天数
        int firstDay = cal.getMinimum(Calendar.DATE);
        //设置日历中月份的最小天数
        cal.set(Calendar.DAY_OF_MONTH,firstDay);
        return cal.getTime();
    }
 
    /**
     * 获取指定年月的最后一天
     * @param year
     * @param month
     * @return
     */
    public static Date getLastDayOfMonth(int year, int month) {
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR, year);
        //设置月份
        cal.set(Calendar.MONTH, month-1);
        //获取某月最大天数
        int lastDay = cal.getActualMaximum(Calendar.DATE);
        //设置日历中月份的最大天数
        cal.set(Calendar.DAY_OF_MONTH, lastDay);
        return cal.getTime();
    }
 
    public static String getFirstTimeByDate() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        String start_update = format.format(cal.getTime());
        cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)-1);
        String end_update = format.format(cal.getTime());
        return end_update;
    }
 
    public static Date getMinute(Date date,int x){
        Calendar beforeTime = Calendar.getInstance();
        beforeTime.setTime(date);
        beforeTime.add(Calendar.MINUTE, x);
        return beforeTime.getTime();
    }
 
    //当天的开始
    public static Date getStartTime() {
        Calendar todayStart = Calendar.getInstance();
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
        return todayStart.getTime();
    }
 
    //当天的结束
    public static Date getEndTime() {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
    }
 
    /**
     * 获取当月开始时间
     */
    public static Date getMonthStartTime() {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }
 
    /**
     * 获取当月的结束时间戳
     */
    public static Date getMonthEndTime() {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }
 
    //获取参考日期的上n个月的数据
    public static Date getDateLessMonth(int i) {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.add(Calendar.DAY_OF_MONTH, -i);// 设置为1号,当前日期既为本月第一天
        return calendar.getTime();
    }
 
    public static String getYearMoneyDay(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(new Date());
    }
 
    public static String getYearMoneyDay2(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar    rightNow    =    Calendar.getInstance();
        rightNow.add(Calendar.DATE,1);
        return sdf.format(rightNow.getTime());
    }
 
    public static String getYearMoneyDay3(String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = sdf.parse(format);
 
        Calendar    rightNow    =    Calendar.getInstance();
        rightNow.setTime(parse);
        rightNow.add(Calendar.DATE,1);
        return sdf.format(rightNow.getTime());
    }
 
    public static Date getYearMoneyDay4(String a,String b) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date parse = sdf.parse(getYearMoneyDay3(a)+" "+b);
        return parse;
    }
    public static LocalDateTime getYearMoneyDay5(String a, String b) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date parse = sdf.parse(getYearMoneyDay3(a)+" "+b);
        ZoneId zoneId = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(parse.toInstant(), zoneId);
    }
 
 
 
    public static String millisToDayHrMinSec(long minute){
        //如果传入的分钟是0,默认24小时
        if (0 == minute) {
            return "0分钟";
        }
        //如果分钟小于60,默认返回分钟
        if (0 < minute && minute < 60) {
            return minute + "分钟";
        }
        //如果分钟小于24小时(1440分钟),返回小时和分钟
        if (60 <= minute && minute < 1440) {
 
            if (minute % 60 == 0) {
                long h = minute / 60;
                return h + "小时";
            } else {
                long h = minute / 60;
                long m = minute % 60;
                return h + "小时" + m + "分钟";
            }
 
        }
        //如果分钟大于1天
        if (minute >= 1440) {
 
            long d = minute / 60 / 24;
            long h = minute / 60 % 24;
            long m = minute % 60;
            String s1 = null;
            if (d > 0) {
                s1 = d + "天";
            }
            //h如果计算大于等于1再展示,否则只展示天和分钟
            if (h >= 1) {
                s1 += h + "小时";
            }
            if (m > 0) {
                s1 += m + "分钟";
            }
 
            return s1;
        }
        return null;
    }
 
    public static void main(String[] args) {
       // System.out.println(millisToDayHrMinSec(1450));
    }
 
}