3
3
import java.text.ParseException ;
4
4
import java.text.SimpleDateFormat ;
5
5
import java.util.Date ;
6
+ import java.util.Locale ;
7
+
8
+ import static com.blankj.utilcode.utils.ConstUtils.* ;
6
9
7
10
/**
8
11
* <pre >
@@ -27,7 +30,7 @@ public class TimeUtils {
27
30
* </p>
28
31
* 定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留): <br >
29
32
* <table border =" 1" cellspacing =" 1" cellpadding =" 1" summary =" Chart shows pattern letters, date/time component, presentation, and examples." >
30
- * <tr bgcolor = " #ccccff " >
33
+ * <tr >
31
34
* <th align =" left" >字母</th>
32
35
* <th align =" left" >日期或时间元素</th>
33
36
* <th align =" left" >表示</th>
@@ -39,7 +42,7 @@ public class TimeUtils {
39
42
* <td >Text</td>
40
43
* <td ><code >AD</code></td>
41
44
* </tr>
42
- * <tr bgcolor = " #eeeeff " >
45
+ * <tr >
43
46
* <td ><code >y</code> </td>
44
47
* <td >年 </td>
45
48
* <td >Year </td>
@@ -51,7 +54,7 @@ public class TimeUtils {
51
54
* <td >Month </td>
52
55
* <td ><code >July</code>; <code >Jul</code>; <code >07</code> </td>
53
56
* </tr>
54
- * <tr bgcolor = " #eeeeff " >
57
+ * <tr >
55
58
* <td ><code >w</code> </td>
56
59
* <td >年中的周数 </td>
57
60
* <td >Number </td>
@@ -63,7 +66,7 @@ public class TimeUtils {
63
66
* <td >Number </td>
64
67
* <td ><code >2</code> </td>
65
68
* </tr>
66
- * <tr bgcolor = " #eeeeff " >
69
+ * <tr >
67
70
* <td ><code >D</code> </td>
68
71
* <td >年中的天数 </td>
69
72
* <td >Number </td>
@@ -75,7 +78,7 @@ public class TimeUtils {
75
78
* <td >Number </td>
76
79
* <td ><code >10</code> </td>
77
80
* </tr>
78
- * <tr bgcolor = " #eeeeff " >
81
+ * <tr >
79
82
* <td ><code >F</code> </td>
80
83
* <td >月份中的星期 </td>
81
84
* <td >Number </td>
@@ -87,7 +90,7 @@ public class TimeUtils {
87
90
* <td >Text </td>
88
91
* <td ><code >Tuesday</code>; <code >Tue</code> </td>
89
92
* </tr>
90
- * <tr bgcolor = " #eeeeff " >
93
+ * <tr >
91
94
* <td ><code >a</code> </td>
92
95
* <td >Am/pm 标记 </td>
93
96
* <td >Text </td>
@@ -99,7 +102,7 @@ public class TimeUtils {
99
102
* <td >Number </td>
100
103
* <td ><code >0</code> </td>
101
104
* </tr>
102
- * <tr bgcolor = " #eeeeff " >
105
+ * <tr >
103
106
* <td ><code >k</code> </td>
104
107
* <td >一天中的小时数(1-24) </td>
105
108
* <td >Number </td>
@@ -111,7 +114,7 @@ public class TimeUtils {
111
114
* <td >Number </td>
112
115
* <td ><code >0</code> </td>
113
116
* </tr>
114
- * <tr bgcolor = " #eeeeff " >
117
+ * <tr >
115
118
* <td ><code >h</code> </td>
116
119
* <td >am/pm 中的小时数(1-12) </td>
117
120
* <td >Number </td>
@@ -123,7 +126,7 @@ public class TimeUtils {
123
126
* <td >Number </td>
124
127
* <td ><code >30</code> </td>
125
128
* </tr>
126
- * <tr bgcolor = " #eeeeff " >
129
+ * <tr >
127
130
* <td ><code >s</code> </td>
128
131
* <td >分钟中的秒数 </td>
129
132
* <td >Number </td>
@@ -135,7 +138,7 @@ public class TimeUtils {
135
138
* <td >Number </td>
136
139
* <td ><code >978</code> </td>
137
140
* </tr>
138
- * <tr bgcolor = " #eeeeff " >
141
+ * <tr >
139
142
* <td ><code >z</code> </td>
140
143
* <td >时区 </td>
141
144
* <td >General time zone </td>
@@ -149,27 +152,32 @@ public class TimeUtils {
149
152
* </tr>
150
153
* </table>
151
154
* <pre >
152
- * yyyy-MM-dd 1969-12-31
153
- * yyyy-MM-dd 1970-01-01
154
- * yyyy-MM-dd HH:mm 1969-12-31 16:00
155
- * yyyy-MM-dd HH:mm 1970-01-01 00:00
156
- * yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
157
- * yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
158
- * yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
159
- * yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
160
- * yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
161
- * yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
155
+ * HH:mm 15:44
156
+ * h:mm a 3:44 下午
157
+ * HH:mm z 15:44 CST
158
+ * HH:mm Z 15:44 +0800
159
+ * HH:mm zzzz 15:44 中国标准时间
160
+ * HH:mm:ss 15:44:40
161
+ * yyyy-MM-dd 2016-08-12
162
+ * yyyy-MM-dd HH:mm 2016-08-12 15:44
163
+ * yyyy-MM-dd HH:mm:ss 2016-08-12 15:44:40
164
+ * yyyy-MM-dd HH:mm:ss zzzz 2016-08-12 15:44:40 中国标准时间
165
+ * EEEE yyyy-MM-dd HH:mm:ss zzzz 星期五 2016-08-12 15:44:40 中国标准时间
166
+ * yyyy-MM-dd HH:mm:ss.SSSZ 2016-08-12 15:44:40.461+0800
167
+ * yyyy-MM-dd'T'HH:mm:ss.SSSZ 2016-08-12T15:44:40.461+0800
168
+ * yyyy.MM.dd G 'at' HH:mm:ss z 2016.08.12 公元 at 15:44:40 CST
169
+ * K:mm a 3:44 下午
170
+ * EEE, MMM d, ''yy 星期五, 八月 12, '16
171
+ * hh 'o''clock' a, zzzz 03 o'clock 下午, 中国标准时间
172
+ * yyyyy.MMMMM.dd GGG hh:mm aaa 02016.八月.12 公元 03:44 下午
173
+ * EEE, d MMM yyyy HH:mm:ss Z 星期五, 12 八月 2016 15:44:40 +0800
174
+ * yyMMddHHmmssZ 160812154440+0800
175
+ * yyyy-MM-dd'T'HH:mm:ss.SSSZ 2016-08-12T15:44:40.461+0800
176
+ * EEEE 'DATE('yyyy-MM-dd')' 'TIME('HH:mm:ss')' zzzz 星期五 DATE(2016-08-12) TIME(15:44:40) 中国标准时间
162
177
* </pre>
163
178
*/
164
- public static final SimpleDateFormat DEFAULT_SDF = new SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" );
165
- /**
166
- * 各时间单位与毫秒的倍数
167
- */
168
- public static final int UNIT_MSEC = 1 ;
169
- public static final int UNIT_SEC = 1000 ;
170
- public static final int UNIT_MIN = 60000 ;
171
- public static final int UNIT_HOUR = 3600000 ;
172
- public static final int UNIT_DAY = 86400000 ;
179
+ public static final SimpleDateFormat DEFAULT_SDF = new SimpleDateFormat (" yyyy-MM-dd HH:mm:ss" , Locale . getDefault());
180
+
173
181
174
182
/**
175
183
* 将时间戳转为时间字符串
@@ -293,22 +301,22 @@ public class TimeUtils {
293
301
*
294
302
* @param milliseconds 毫秒时间戳
295
303
* @param unit <ul >
296
- * <li >UNIT_MSEC :毫秒</li>
297
- * <li >UNIT_SEC :秒</li>
298
- * <li >UNIT_MIN :分</li>
299
- * <li >UNIT_HOUR :小时</li>
300
- * <li >UNIT_DAY :天</li>
304
+ * <li >MSEC :毫秒</li>
305
+ * <li >SEC :秒</li>
306
+ * <li >MIN :分</li>
307
+ * <li >HOUR :小时</li>
308
+ * <li >DAY :天</li>
301
309
* </ul>
302
310
* @return unit时间戳
303
311
*/
304
312
private static long milliseconds2Unit (long milliseconds , int unit ) {
305
313
switch (unit) {
306
- case UNIT_MSEC :
307
- case UNIT_SEC :
308
- case UNIT_MIN :
309
- case UNIT_HOUR :
310
- case UNIT_DAY :
311
- return Math . abs( milliseconds) / unit;
314
+ case MSEC :
315
+ case SEC :
316
+ case MIN :
317
+ case HOUR :
318
+ case DAY :
319
+ return milliseconds / unit;
312
320
}
313
321
return - 1 ;
314
322
}
@@ -317,59 +325,60 @@ public class TimeUtils {
317
325
* 获取两个时间差(单位:unit)
318
326
* <p >time1和time2格式都为yyyy-MM-dd HH:mm:ss</p>
319
327
*
320
- * @param time1 时间字符串1
321
- * @param time2 时间字符串2
328
+ * @param time0 时间字符串1
329
+ * @param time1 时间字符串2
322
330
* @param unit <ul >
323
- * <li >UNIT_MSEC :毫秒</li>
324
- * <li >UNIT_SEC :秒</li>
325
- * <li >UNIT_MIN :分</li>
326
- * <li >UNIT_HOUR :小时</li>
327
- * <li >UNIT_DAY :天</li>
331
+ * <li >MSEC :毫秒</li>
332
+ * <li >SEC :秒</li>
333
+ * <li >MIN :分</li>
334
+ * <li >HOUR :小时</li>
335
+ * <li >DAY :天</li>
328
336
* </ul>
329
337
* @return unit时间戳
330
338
*/
331
- public static long getIntervalTime (String time1 , String time2 , int unit ) {
332
- return getIntervalTime(time1, time2 , unit, DEFAULT_SDF );
339
+ public static long getIntervalTime (String time0 , String time1 , int unit ) {
340
+ return getIntervalTime(time0, time1 , unit, DEFAULT_SDF );
333
341
}
334
342
335
343
/**
336
344
* 获取两个时间差(单位:unit)
337
345
* <p >time1和time2格式都为format</p>
338
346
*
339
- * @param time1 时间字符串1
340
- * @param time2 时间字符串2
347
+ * @param time0 时间字符串1
348
+ * @param time1 时间字符串2
341
349
* @param unit <ul >
342
- * <li >UNIT_MSEC :毫秒</li>
343
- * <li >UNIT_SEC :秒</li>
344
- * <li >UNIT_MIN :分</li>
345
- * <li >UNIT_HOUR :小时</li>
346
- * <li >UNIT_DAY :天</li>
350
+ * <li >MSEC :毫秒</li>
351
+ * <li >SEC :秒</li>
352
+ * <li >MIN :分</li>
353
+ * <li >HOUR :小时</li>
354
+ * <li >DAY :天</li>
347
355
* </ul>
348
356
* @param format 时间格式
349
357
* @return unit时间戳
350
358
*/
351
- public static long getIntervalTime (String time1 , String time2 , int unit , SimpleDateFormat format ) {
352
- return milliseconds2Unit(string2Milliseconds(time1 , format)
353
- - string2Milliseconds(time2 , format), unit);
359
+ public static long getIntervalTime (String time0 , String time1 , int unit , SimpleDateFormat format ) {
360
+ return Math . abs( milliseconds2Unit(string2Milliseconds(time0 , format)
361
+ - string2Milliseconds(time1 , format), unit) );
354
362
}
355
363
356
364
/**
357
365
* 获取两个时间差(单位:unit)
358
366
* <p >time1和time2都为Date类型</p>
359
367
*
360
- * @param time1 Date类型时间1
361
- * @param time2 Date类型时间2
368
+ * @param time0 Date类型时间1
369
+ * @param time1 Date类型时间2
362
370
* @param unit <ul >
363
- * <li >UNIT_MSEC :毫秒</li>
364
- * <li >UNIT_SEC :秒</li>
365
- * <li >UNIT_MIN :分</li>
366
- * <li >UNIT_HOUR :小时</li>
367
- * <li >UNIT_DAY :天</li>
371
+ * <li >MSEC :毫秒</li>
372
+ * <li >SEC :秒</li>
373
+ * <li >MIN :分</li>
374
+ * <li >HOUR :小时</li>
375
+ * <li >DAY :天</li>
368
376
* </ul>
369
377
* @return unit时间戳
370
378
*/
371
- public static long getIntervalTime (Date time1 , Date time2 , int unit ) {
372
- return milliseconds2Unit(date2Milliseconds(time2) - date2Milliseconds(time1), unit);
379
+ public static long getIntervalTime (Date time0 , Date time1 , int unit ) {
380
+ return Math . abs(milliseconds2Unit(date2Milliseconds(time1)
381
+ - date2Milliseconds(time0), unit));
373
382
}
374
383
375
384
/**
@@ -388,7 +397,7 @@ public class TimeUtils {
388
397
* @return 时间字符串
389
398
*/
390
399
public static String getCurTimeString () {
391
- return milliseconds2String(getCurTimeMills ());
400
+ return date2String( new Date ());
392
401
}
393
402
394
403
/**
@@ -399,7 +408,7 @@ public class TimeUtils {
399
408
* @return 时间字符串
400
409
*/
401
410
public static String getCurTimeString (SimpleDateFormat format ) {
402
- return milliseconds2String(getCurTimeMills (), format);
411
+ return date2String( new Date (), format);
403
412
}
404
413
405
414
/**
@@ -418,11 +427,11 @@ public class TimeUtils {
418
427
*
419
428
* @param time 时间字符串
420
429
* @param unit <ul >
421
- * <li >UNIT_MSEC :毫秒</li>
422
- * <li >UNIT_SEC :秒</li>
423
- * <li >UNIT_MIN :分</li>
424
- * <li >UNIT_HOUR :小时</li>
425
- * <li >UNIT_DAY :天</li>
430
+ * <li >MSEC :毫秒</li>
431
+ * <li >SEC :秒</li>
432
+ * <li >MIN :分</li>
433
+ * <li >HOUR :小时</li>
434
+ * <li >DAY :天</li>
426
435
* </ul>
427
436
* @return unit时间戳
428
437
*/
@@ -436,11 +445,11 @@ public class TimeUtils {
436
445
*
437
446
* @param time 时间字符串
438
447
* @param unit <ul >
439
- * <li >UNIT_MSEC :毫秒</li>
440
- * <li >UNIT_SEC :秒</li>
441
- * <li >UNIT_MIN :分</li>
442
- * <li >UNIT_HOUR :小时</li>
443
- * <li >UNIT_DAY :天</li>
448
+ * <li >MSEC :毫秒</li>
449
+ * <li >SEC :秒</li>
450
+ * <li >MIN :分</li>
451
+ * <li >HOUR :小时</li>
452
+ * <li >DAY :天</li>
444
453
* </ul>
445
454
* @param format 时间格式
446
455
* @return unit时间戳
@@ -455,11 +464,11 @@ public class TimeUtils {
455
464
*
456
465
* @param time Date类型时间
457
466
* @param unit <ul >
458
- * <li >UNIT_MSEC :毫秒</li>
459
- * <li >UNIT_SEC :秒</li>
460
- * <li >UNIT_MIN :分</li>
461
- * <li >UNIT_HOUR :小时</li>
462
- * <li >UNIT_DAY :天</li>
467
+ * <li >MSEC :毫秒</li>
468
+ * <li >SEC :秒</li>
469
+ * <li >MIN :分</li>
470
+ * <li >HOUR :小时</li>
471
+ * <li >DAY :天</li>
463
472
* </ul>
464
473
* @return unit时间戳
465
474
*/
@@ -476,6 +485,5 @@ public class TimeUtils {
476
485
public static boolean isLeapYear (int year ) {
477
486
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ;
478
487
}
479
-
480
488
}
481
489
```
0 commit comments