33import java.text.ParseException ;
44import java.text.SimpleDateFormat ;
55import java.util.Date ;
6+ import java.util.Locale ;
7+
8+ import static com.blankj.utilcode.utils.ConstUtils.* ;
69
710/**
811 * <pre >
@@ -27,7 +30,7 @@ public class TimeUtils {
2730 * </p>
2831 * 定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留): <br >
2932 * <table border =" 1" cellspacing =" 1" cellpadding =" 1" summary =" Chart shows pattern letters, date/time component, presentation, and examples." >
30- * <tr bgcolor = " #ccccff " >
33+ * <tr >
3134 * <th align =" left" >字母</th>
3235 * <th align =" left" >日期或时间元素</th>
3336 * <th align =" left" >表示</th>
@@ -39,7 +42,7 @@ public class TimeUtils {
3942 * <td >Text</td>
4043 * <td ><code >AD</code></td>
4144 * </tr>
42- * <tr bgcolor = " #eeeeff " >
45+ * <tr >
4346 * <td ><code >y</code> </td>
4447 * <td >年 </td>
4548 * <td >Year </td>
@@ -51,7 +54,7 @@ public class TimeUtils {
5154 * <td >Month </td>
5255 * <td ><code >July</code>; <code >Jul</code>; <code >07</code> </td>
5356 * </tr>
54- * <tr bgcolor = " #eeeeff " >
57+ * <tr >
5558 * <td ><code >w</code> </td>
5659 * <td >年中的周数 </td>
5760 * <td >Number </td>
@@ -63,7 +66,7 @@ public class TimeUtils {
6366 * <td >Number </td>
6467 * <td ><code >2</code> </td>
6568 * </tr>
66- * <tr bgcolor = " #eeeeff " >
69+ * <tr >
6770 * <td ><code >D</code> </td>
6871 * <td >年中的天数 </td>
6972 * <td >Number </td>
@@ -75,7 +78,7 @@ public class TimeUtils {
7578 * <td >Number </td>
7679 * <td ><code >10</code> </td>
7780 * </tr>
78- * <tr bgcolor = " #eeeeff " >
81+ * <tr >
7982 * <td ><code >F</code> </td>
8083 * <td >月份中的星期 </td>
8184 * <td >Number </td>
@@ -87,7 +90,7 @@ public class TimeUtils {
8790 * <td >Text </td>
8891 * <td ><code >Tuesday</code>; <code >Tue</code> </td>
8992 * </tr>
90- * <tr bgcolor = " #eeeeff " >
93+ * <tr >
9194 * <td ><code >a</code> </td>
9295 * <td >Am/pm 标记 </td>
9396 * <td >Text </td>
@@ -99,7 +102,7 @@ public class TimeUtils {
99102 * <td >Number </td>
100103 * <td ><code >0</code> </td>
101104 * </tr>
102- * <tr bgcolor = " #eeeeff " >
105+ * <tr >
103106 * <td ><code >k</code> </td>
104107 * <td >一天中的小时数(1-24) </td>
105108 * <td >Number </td>
@@ -111,7 +114,7 @@ public class TimeUtils {
111114 * <td >Number </td>
112115 * <td ><code >0</code> </td>
113116 * </tr>
114- * <tr bgcolor = " #eeeeff " >
117+ * <tr >
115118 * <td ><code >h</code> </td>
116119 * <td >am/pm 中的小时数(1-12) </td>
117120 * <td >Number </td>
@@ -123,7 +126,7 @@ public class TimeUtils {
123126 * <td >Number </td>
124127 * <td ><code >30</code> </td>
125128 * </tr>
126- * <tr bgcolor = " #eeeeff " >
129+ * <tr >
127130 * <td ><code >s</code> </td>
128131 * <td >分钟中的秒数 </td>
129132 * <td >Number </td>
@@ -135,7 +138,7 @@ public class TimeUtils {
135138 * <td >Number </td>
136139 * <td ><code >978</code> </td>
137140 * </tr>
138- * <tr bgcolor = " #eeeeff " >
141+ * <tr >
139142 * <td ><code >z</code> </td>
140143 * <td >时区 </td>
141144 * <td >General time zone </td>
@@ -149,27 +152,32 @@ public class TimeUtils {
149152 * </tr>
150153 * </table>
151154 * <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) 中国标准时间
162177 * </pre>
163178 */
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+
173181
174182 /**
175183 * 将时间戳转为时间字符串
@@ -293,22 +301,22 @@ public class TimeUtils {
293301 *
294302 * @param milliseconds 毫秒时间戳
295303 * @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>
301309 * </ul>
302310 * @return unit时间戳
303311 */
304312 private static long milliseconds2Unit (long milliseconds , int unit ) {
305313 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;
312320 }
313321 return - 1 ;
314322 }
@@ -317,59 +325,60 @@ public class TimeUtils {
317325 * 获取两个时间差(单位:unit)
318326 * <p >time1和time2格式都为yyyy-MM-dd HH:mm:ss</p>
319327 *
320- * @param time1 时间字符串1
321- * @param time2 时间字符串2
328+ * @param time0 时间字符串1
329+ * @param time1 时间字符串2
322330 * @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>
328336 * </ul>
329337 * @return unit时间戳
330338 */
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 );
333341 }
334342
335343 /**
336344 * 获取两个时间差(单位:unit)
337345 * <p >time1和time2格式都为format</p>
338346 *
339- * @param time1 时间字符串1
340- * @param time2 时间字符串2
347+ * @param time0 时间字符串1
348+ * @param time1 时间字符串2
341349 * @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>
347355 * </ul>
348356 * @param format 时间格式
349357 * @return unit时间戳
350358 */
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) );
354362 }
355363
356364 /**
357365 * 获取两个时间差(单位:unit)
358366 * <p >time1和time2都为Date类型</p>
359367 *
360- * @param time1 Date类型时间1
361- * @param time2 Date类型时间2
368+ * @param time0 Date类型时间1
369+ * @param time1 Date类型时间2
362370 * @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>
368376 * </ul>
369377 * @return unit时间戳
370378 */
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));
373382 }
374383
375384 /**
@@ -388,7 +397,7 @@ public class TimeUtils {
388397 * @return 时间字符串
389398 */
390399 public static String getCurTimeString () {
391- return milliseconds2String(getCurTimeMills ());
400+ return date2String( new Date ());
392401 }
393402
394403 /**
@@ -399,7 +408,7 @@ public class TimeUtils {
399408 * @return 时间字符串
400409 */
401410 public static String getCurTimeString (SimpleDateFormat format ) {
402- return milliseconds2String(getCurTimeMills (), format);
411+ return date2String( new Date (), format);
403412 }
404413
405414 /**
@@ -418,11 +427,11 @@ public class TimeUtils {
418427 *
419428 * @param time 时间字符串
420429 * @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>
426435 * </ul>
427436 * @return unit时间戳
428437 */
@@ -436,11 +445,11 @@ public class TimeUtils {
436445 *
437446 * @param time 时间字符串
438447 * @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>
444453 * </ul>
445454 * @param format 时间格式
446455 * @return unit时间戳
@@ -455,11 +464,11 @@ public class TimeUtils {
455464 *
456465 * @param time Date类型时间
457466 * @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>
463472 * </ul>
464473 * @return unit时间戳
465474 */
@@ -476,6 +485,5 @@ public class TimeUtils {
476485 public static boolean isLeapYear (int year ) {
477486 return year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ;
478487 }
479-
480488}
481489```
0 commit comments