|
@@ -5,8 +5,16 @@ import org.apache.commons.lang3.time.DateUtils;
|
5
|
5
|
import java.text.Format;
|
6
|
6
|
import java.text.ParseException;
|
7
|
7
|
import java.text.SimpleDateFormat;
|
|
8
|
+import java.time.LocalDate;
|
|
9
|
+import java.time.LocalDateTime;
|
|
10
|
+import java.time.ZoneId;
|
|
11
|
+import java.time.format.DateTimeFormatter;
|
|
12
|
+import java.time.temporal.WeekFields;
|
8
|
13
|
import java.util.Calendar;
|
9
|
14
|
import java.util.Date;
|
|
15
|
+import java.util.Locale;
|
|
16
|
+
|
|
17
|
+import static cn.hutool.core.date.DateUtil.format;
|
10
|
18
|
|
11
|
19
|
/**
|
12
|
20
|
* 时间工具类
|
|
@@ -154,6 +162,7 @@ public class DateUtil {
|
154
|
162
|
|
155
|
163
|
/**
|
156
|
164
|
* 获取具体指定的时间
|
|
165
|
+ *
|
157
|
166
|
* @param date
|
158
|
167
|
* @param hour
|
159
|
168
|
* @param minute
|
|
@@ -165,13 +174,13 @@ public class DateUtil {
|
165
|
174
|
c.setTime(date);
|
166
|
175
|
c.setLenient(true);
|
167
|
176
|
|
168
|
|
- if(null != hour) {
|
|
177
|
+ if (null != hour) {
|
169
|
178
|
c.set(Calendar.HOUR_OF_DAY, hour);
|
170
|
179
|
}
|
171
|
|
- if(null != minute) {
|
|
180
|
+ if (null != minute) {
|
172
|
181
|
c.set(Calendar.MINUTE, minute);
|
173
|
182
|
}
|
174
|
|
- if(null != second) {
|
|
183
|
+ if (null != second) {
|
175
|
184
|
c.set(Calendar.SECOND, second);
|
176
|
185
|
}
|
177
|
186
|
c.set(Calendar.MILLISECOND, 0);
|
|
@@ -180,6 +189,7 @@ public class DateUtil {
|
180
|
189
|
|
181
|
190
|
/**
|
182
|
191
|
* 获取当前时间0秒的日期
|
|
192
|
+ *
|
183
|
193
|
* @return
|
184
|
194
|
*/
|
185
|
195
|
public static Date getCurrMinute() {
|
|
@@ -189,6 +199,7 @@ public class DateUtil {
|
189
|
199
|
|
190
|
200
|
/**
|
191
|
201
|
* 获取当前时间0分0秒的日期
|
|
202
|
+ *
|
192
|
203
|
* @return
|
193
|
204
|
*/
|
194
|
205
|
public static Date getCurrHour() {
|
|
@@ -199,6 +210,7 @@ public class DateUtil {
|
199
|
210
|
|
200
|
211
|
/**
|
201
|
212
|
* 获取当前日期 0时0分0秒 的日期
|
|
213
|
+ *
|
202
|
214
|
* @return
|
203
|
215
|
*/
|
204
|
216
|
public static Date getCurrDate() {
|
|
@@ -207,6 +219,7 @@ public class DateUtil {
|
207
|
219
|
|
208
|
220
|
/**
|
209
|
221
|
* 获取当前日期 hour时minute分second秒 的日期
|
|
222
|
+ *
|
210
|
223
|
* @return
|
211
|
224
|
*/
|
212
|
225
|
public static Date getCurrDate(Integer hour, Integer minute, Integer second) {
|
|
@@ -216,6 +229,7 @@ public class DateUtil {
|
216
|
229
|
|
217
|
230
|
/**
|
218
|
231
|
* 获取当前周星期一 0时0分0秒 的日期
|
|
232
|
+ *
|
219
|
233
|
* @return
|
220
|
234
|
*/
|
221
|
235
|
public static Date getFirstDateOfCurrWeek() {
|
|
@@ -224,6 +238,7 @@ public class DateUtil {
|
224
|
238
|
|
225
|
239
|
/**
|
226
|
240
|
* 获取当前周星期一 hour时minute分second秒 的日期
|
|
241
|
+ *
|
227
|
242
|
* @return
|
228
|
243
|
*/
|
229
|
244
|
public static Date getFirstDateOfCurrWeek(int hour, int minute, int second) {
|
|
@@ -244,6 +259,7 @@ public class DateUtil {
|
244
|
259
|
|
245
|
260
|
/**
|
246
|
261
|
* 获取当前月第一天 0时0分0秒 的日期
|
|
262
|
+ *
|
247
|
263
|
* @return
|
248
|
264
|
*/
|
249
|
265
|
public static Date getFirstDateOfCurrMonth() {
|
|
@@ -252,6 +268,7 @@ public class DateUtil {
|
252
|
268
|
|
253
|
269
|
/**
|
254
|
270
|
* 获取当前月第一天 hour时minute分second秒 的日期
|
|
271
|
+ *
|
255
|
272
|
* @return
|
256
|
273
|
*/
|
257
|
274
|
public static Date getFirstDateOfCurrMonth(int hour, int minute, int second) {
|
|
@@ -272,6 +289,7 @@ public class DateUtil {
|
272
|
289
|
|
273
|
290
|
/**
|
274
|
291
|
* 获取当前季度第一天 0时0分0秒 的日期
|
|
292
|
+ *
|
275
|
293
|
* @return
|
276
|
294
|
*/
|
277
|
295
|
public static Date getFirstDateOfCurrSeason() {
|
|
@@ -280,6 +298,7 @@ public class DateUtil {
|
280
|
298
|
|
281
|
299
|
/**
|
282
|
300
|
* 获取当前季度第一天 hour时minute分second秒 的日期
|
|
301
|
+ *
|
283
|
302
|
* @return
|
284
|
303
|
*/
|
285
|
304
|
public static Date getFirstDateOfCurrSeason(int hour, int minute, int second) {
|
|
@@ -303,6 +322,7 @@ public class DateUtil {
|
303
|
322
|
|
304
|
323
|
/**
|
305
|
324
|
* 获取当前年第一天 0时0分0秒 的日期
|
|
325
|
+ *
|
306
|
326
|
* @return
|
307
|
327
|
*/
|
308
|
328
|
public static Date getFirstDateOfCurrYear() {
|
|
@@ -311,6 +331,7 @@ public class DateUtil {
|
311
|
331
|
|
312
|
332
|
/**
|
313
|
333
|
* 获取当前年第一天 hour时minute分second秒 的日期
|
|
334
|
+ *
|
314
|
335
|
* @return
|
315
|
336
|
*/
|
316
|
337
|
public static Date getFirstDateOfCurrYear(int hour, int minute, int second) {
|
|
@@ -330,49 +351,9 @@ public class DateUtil {
|
330
|
351
|
}
|
331
|
352
|
|
332
|
353
|
|
333
|
|
-
|
334
|
|
-
|
335
|
|
- public static void main(String[] args) {
|
336
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
337
|
|
-// System.out.println(sdf.format(getCurrMinute()));
|
338
|
|
-// System.out.println(getCurrMinute());
|
339
|
|
-//
|
340
|
|
-// System.out.println(sdf.format(getCurrHour()));
|
341
|
|
-// System.out.println(getCurrHour());
|
342
|
|
-
|
343
|
|
- System.out.println(sdf.format(getCurrDate(8,0,0)));
|
344
|
|
- System.out.println(getCurrDate());
|
345
|
|
-//
|
346
|
|
-// System.out.println(sdf.format(getFirstDateOfCurrWeek(8,0,0)));
|
347
|
|
-// System.out.println(getFirstDateOfCurrWeek());
|
348
|
|
-//
|
349
|
|
-// System.out.println(sdf.format(getFirstDateOfCurrMonth(8,0,0)));
|
350
|
|
-// System.out.println(getFirstDateOfCurrMonth());
|
351
|
|
-//
|
352
|
|
-// System.out.println(sdf.format(getFirstDateOfCurrSeason(8,0,0)));
|
353
|
|
-// System.out.println(getFirstDateOfCurrSeason());
|
354
|
|
-//
|
355
|
|
-// System.out.println(sdf.format(getFirstDateOfCurrYear(8,0,0)));
|
356
|
|
-// System.out.println(getFirstDateOfCurrYear());
|
357
|
|
-//
|
358
|
|
-// System.out.println(sdf.format(aheadOfYears(new Date(), 2)));
|
359
|
|
-// System.out.println(sdf.format(aheadOfSeasons(new Date(), 1)));
|
360
|
|
-// System.out.println(sdf.format(aheadOfMonths(new Date(), 1)));
|
361
|
|
-
|
362
|
|
-// System.out.println(sdf.format(aheadOfWeeks(new Date(), 2)));
|
363
|
|
-// System.out.println(sdf.format(aheadOfDays(new Date(), 1)));
|
364
|
|
-// System.out.println(sdf.format(aheadOfHours(new Date(), 3)));
|
365
|
|
-// System.out.println(sdf.format(aheadOfMinutes(new Date(), 80)));
|
366
|
|
-
|
367
|
|
-// Date date = evenMinuteDate(new Date());
|
368
|
|
-// System.out.println(sdf.format(date));
|
369
|
|
-
|
370
|
|
- String cron = getCron(new Date());
|
371
|
|
- System.out.println(cron);
|
372
|
|
- }
|
373
|
|
-
|
374
|
354
|
/**
|
375
|
355
|
* 日期提前几年
|
|
356
|
+ *
|
376
|
357
|
* @param date
|
377
|
358
|
* @param years
|
378
|
359
|
* @return
|
|
@@ -383,6 +364,7 @@ public class DateUtil {
|
383
|
364
|
|
384
|
365
|
/**
|
385
|
366
|
* 日期提前几个季度
|
|
367
|
+ *
|
386
|
368
|
* @param date
|
387
|
369
|
* @param seasons
|
388
|
370
|
* @return
|
|
@@ -393,6 +375,7 @@ public class DateUtil {
|
393
|
375
|
|
394
|
376
|
/**
|
395
|
377
|
* 日期提前几个月
|
|
378
|
+ *
|
396
|
379
|
* @param date
|
397
|
380
|
* @param months
|
398
|
381
|
* @return
|
|
@@ -403,6 +386,7 @@ public class DateUtil {
|
403
|
386
|
|
404
|
387
|
/**
|
405
|
388
|
* 日期提前几周
|
|
389
|
+ *
|
406
|
390
|
* @param date
|
407
|
391
|
* @param weeks
|
408
|
392
|
* @return
|
|
@@ -413,6 +397,7 @@ public class DateUtil {
|
413
|
397
|
|
414
|
398
|
/**
|
415
|
399
|
* 日期提前几天
|
|
400
|
+ *
|
416
|
401
|
* @param date
|
417
|
402
|
* @param days
|
418
|
403
|
* @return
|
|
@@ -423,6 +408,7 @@ public class DateUtil {
|
423
|
408
|
|
424
|
409
|
/**
|
425
|
410
|
* 日期提前几个小时
|
|
411
|
+ *
|
426
|
412
|
* @param date
|
427
|
413
|
* @param hours
|
428
|
414
|
* @return
|
|
@@ -433,6 +419,7 @@ public class DateUtil {
|
433
|
419
|
|
434
|
420
|
/**
|
435
|
421
|
* 日期提前几分钟
|
|
422
|
+ *
|
436
|
423
|
* @param date
|
437
|
424
|
* @param minutes
|
438
|
425
|
* @return
|
|
@@ -444,11 +431,12 @@ public class DateUtil {
|
444
|
431
|
|
445
|
432
|
/**
|
446
|
433
|
* 功能描述:日期转换cron表达式
|
|
434
|
+ *
|
447
|
435
|
* @param date
|
448
|
436
|
* @param dateFormat
|
449
|
437
|
* @return
|
450
|
438
|
*/
|
451
|
|
- public static String formatDateByPattern(Date date, String dateFormat){
|
|
439
|
+ public static String formatDateByPattern(Date date, String dateFormat) {
|
452
|
440
|
String result = null;
|
453
|
441
|
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
|
454
|
442
|
if (date != null) {
|
|
@@ -459,13 +447,37 @@ public class DateUtil {
|
459
|
447
|
|
460
|
448
|
/**
|
461
|
449
|
* 日期转换cron表达式
|
|
450
|
+ *
|
462
|
451
|
* @param date
|
463
|
452
|
* @return
|
464
|
453
|
*/
|
465
|
|
- public static String getCron(Date date){
|
466
|
|
- String dateFormat="ss mm HH dd MM ? yyyy";
|
|
454
|
+ public static String getCron(Date date) {
|
|
455
|
+ String dateFormat = "ss mm HH dd MM ? yyyy";
|
467
|
456
|
return formatDateByPattern(date, dateFormat);
|
468
|
457
|
}
|
469
|
458
|
|
|
459
|
+ /**
|
|
460
|
+ * 格式化获取年
|
|
461
|
+ *
|
|
462
|
+ * @param date 时间
|
|
463
|
+ * @param pattern 格式类型 (yyyy-MM-dd HH:mm:ss)
|
|
464
|
+ * @return
|
|
465
|
+ */
|
|
466
|
+ public static String getYMDHMS(Date date, String pattern) {
|
|
467
|
+ return format(LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()), pattern);
|
|
468
|
+ }
|
|
469
|
+
|
|
470
|
+ /**
|
|
471
|
+ * 获取当前时间 为一年中的第多少周
|
|
472
|
+ *
|
|
473
|
+ * @param date
|
|
474
|
+ * @return
|
|
475
|
+ */
|
|
476
|
+ public static Integer getPresentWeek(Date date) {
|
|
477
|
+ Calendar calendar = Calendar.getInstance();
|
|
478
|
+ calendar.setFirstDayOfWeek(Calendar.MONDAY);
|
|
479
|
+ calendar.setTime(date);
|
|
480
|
+ return calendar.get(Calendar.WEEK_OF_YEAR);
|
|
481
|
+ }
|
470
|
482
|
|
471
|
483
|
}
|