編輯:關於android開發
android開發時間和日期工具類的代碼實現:
1 package com.gzcivil.utils;
2
3 import android.annotation.SuppressLint;
4 import android.util.Log;
5
6 import java.text.DateFormat;
7 import java.text.ParseException;
8 import java.text.ParsePosition;
9 import java.text.SimpleDateFormat;
10 import java.util.Calendar;
11 import java.util.Date;
12
13 /**
14 * @see 時間、日期工具類
15 * @author Chenxy
16 * @date 2015-12-16 10:40
17 */
18 public class DateUtil {
19
20 static SimpleDateFormat format;
21
22 /** 日期格式:yyyy-MM-dd HH:mm:ss **/
23 public static final String DF_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
24
25 /** 日期格式:yyyy-MM-dd HH:mm **/
26 public static final String DF_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
27
28 /** 日期格式:yyyy-MM-dd **/
29 public static final String DF_YYYY_MM_DD = "yyyy-MM-dd";
30
31 /** 日期格式:HH:mm:ss **/
32 public static final String DF_HH_MM_SS = "HH:mm:ss";
33
34 /** 日期格式:HH:mm **/
35 public static final String DF_HH_MM = "HH:mm";
36
37 private final static long minute = 60 * 1000;// 1分鐘
38 private final static long hour = 60 * minute;// 1小時
39 private final static long day = 24 * hour;// 1天
40 private final static long month = 31 * day;// 月
41 private final static long year = 12 * month;// 年
42
43 /** Log輸出標識 **/
44 private static final String TAG = DateUtil.class.getSimpleName();
45
46 public DateUtil() {
47
48 }
49
50 /**
51 * 將日期格式化成友好的字符串:幾分鐘前、幾小時前、幾天前、幾月前、幾年前、剛剛
52 *
53 * @param date
54 * @return
55 */
56 public static String formatFriendly(Date date) {
57 if (date == null) {
58 return null;
59 }
60 long diff = new Date().getTime() - date.getTime();
61 long r = 0;
62 if (diff > year) {
63 r = (diff / year);
64 return r + "年前";
65 }
66 if (diff > month) {
67 r = (diff / month);
68 return r + "個月前";
69 }
70 if (diff > day) {
71 r = (diff / day);
72 return r + "天前";
73 }
74 if (diff > hour) {
75 r = (diff / hour);
76 return r + "個小時前";
77 }
78 if (diff > minute) {
79 r = (diff / minute);
80 return r + "分鐘前";
81 }
82 return "剛剛";
83 }
84
85 /**
86 * 將日期以yyyy-MM-dd HH:mm:ss格式化
87 *
88 * @param dateL
89 * 日期
90 * @return
91 */
92 @SuppressLint("SimpleDateFormat")
93 public static String formatDateTime(long dateL) {
94 SimpleDateFormat sdf = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);
95 Date date = new Date(dateL);
96 return sdf.format(date);
97 }
98
99 /**
100 * 將日期以yyyy-MM-dd HH:mm:ss格式化
101 *
102 * @param dateL
103 * 日期
104 * @return
105 */
106 @SuppressLint("SimpleDateFormat")
107 public static String formatDateTime(long dateL, String formater) {
108 SimpleDateFormat sdf = new SimpleDateFormat(formater);
109 return sdf.format(new Date(dateL));
110 }
111
112 /**
113 * 將日期以yyyy-MM-dd HH:mm:ss格式化
114 *
115 * @param dateL
116 * 日期
117 * @return
118 */
119 @SuppressLint("SimpleDateFormat")
120 public static String formatDateTime(Date date, String formater) {
121 SimpleDateFormat sdf = new SimpleDateFormat(formater);
122 return sdf.format(date);
123 }
124
125 /**
126 * 將日期字符串轉成日期
127 *
128 * @param strDate
129 * 字符串日期
130 * @return java.util.date日期類型
131 */
132 @SuppressLint("SimpleDateFormat")
133 public static Date parseDate(String strDate) {
134 DateFormat dateFormat = new SimpleDateFormat(DF_YYYY_MM_DD_HH_MM_SS);
135 Date returnDate = null;
136 try {
137 returnDate = dateFormat.parse(strDate);
138 } catch (ParseException e) {
139 Log.v(TAG, "parseDate failed !");
140
141 }
142 return returnDate;
143
144 }
145
146 /**
147 * 獲取系統當前日期
148 *
149 * @return
150 */
151 public static Date gainCurrentDate() {
152 return new Date();
153 }
154
155 /**
156 * 驗證日期是否比當前日期早
157 *
158 * @param target1
159 * 比較時間1
160 * @param target2
161 * 比較時間2
162 * @return true 則代表target1比target2晚或等於target2,否則比target2早
163 */
164 public static boolean compareDate(Date target1, Date target2) {
165 boolean flag = false;
166 try {
167 String target1DateTime = formatDateTime(target1, DF_YYYY_MM_DD_HH_MM_SS);
168 String target2DateTime = formatDateTime(target2, DF_YYYY_MM_DD_HH_MM_SS);
169 if (target1DateTime.compareTo(target2DateTime) <= 0) {
170 flag = true;
171 }
172 } catch (Exception e) {
173 System.out.println("比較失敗,原因:" + e.getMessage());
174 }
175 return flag;
176 }
177
178 /**
179 * 對日期進行增加操作
180 *
181 * @param target
182 * 需要進行運算的日期
183 * @param hour
184 * 小時
185 * @return
186 */
187 public static Date addDateTime(Date target, double hour) {
188 if (null == target || hour < 0) {
189 return target;
190 }
191
192 return new Date(target.getTime() + (long) (hour * 60 * 60 * 1000));
193 }
194
195 /**
196 * 對日期進行相減操作
197 *
198 * @param target
199 * 需要進行運算的日期
200 * @param hour
201 * 小時
202 * @return
203 */
204 public static Date subDateTime(Date target, double hour) {
205 if (null == target || hour < 0) {
206 return target;
207 }
208
209 return new Date(target.getTime() - (long) (hour * 60 * 60 * 1000));
210 }
211
212 /** 獲取系統時間的方法:月/日 時:分:秒 */
213 public static String getFormateDate() {
214 Calendar calendar = Calendar.getInstance();
215 int month = (calendar.get(Calendar.MONTH) + 1);
216 int day = calendar.get(Calendar.DAY_OF_MONTH);
217 int hour = calendar.get(Calendar.HOUR_OF_DAY);
218 int minute = calendar.get(Calendar.MINUTE);
219 int second = calendar.get(Calendar.SECOND);
220
221 String systemTime = (month < 10 ? "0" + month : month) + "/" + (day < 10 ? "0" + day : day) + " " + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second);
222 return systemTime;
223 }
224
225 /** 獲取系統時間的方法:時:分:秒 */
226 public static String getHourAndMinute() {
227 Calendar calendar = Calendar.getInstance();
228 int hour = calendar.get(Calendar.HOUR_OF_DAY);
229 int minute = calendar.get(Calendar.MINUTE);
230 return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute);
231 }
232
233 /** 獲取系統時間的方法:時 */
234 public static String getHour() {
235 Calendar calendar = Calendar.getInstance();
236 int hour = calendar.get(Calendar.HOUR_OF_DAY);
237 return ((hour < 10 ? "0" + hour : hour) + "");
238 }
239
240 /**
241 * 將2014-09-10 00:00:00 換2014-09-10
242 *
243 * @param strDate
244 * @return
245 */
246 public static String strFormatStr(String strDate) {
247 if (strDate.equals("")) {
248 return "";
249 }
250 return dateToStr(strToDate(strDate));
251 }
252
253 /**
254 * 2015-01-07 15:05:34
255 *
256 * @param strDate
257 * @return
258 */
259 @SuppressLint("SimpleDateFormat")
260 public static Date strToDateHHMMSS(String strDate) {
261 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
262 ParsePosition pos = new ParsePosition(0);
263 Date strtodate = formatter.parse(strDate, pos);
264 return strtodate;
265 }
266
267 /**
268 * 2015-01-07
269 *
270 * @param strDate
271 * @return
272 */
273 @SuppressLint("SimpleDateFormat")
274 public static Date strToDate(String strDate) {
275 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
276 ParsePosition pos = new ParsePosition(0);
277 Date strtodate = formatter.parse(strDate, pos);
278 return strtodate;
279 }
280
281 /**
282 * 2015.01.07
283 *
284 * @param strDate
285 * @return
286 */
287 @SuppressLint("SimpleDateFormat")
288 public static Date strToDateDorp(String strDate) {
289 SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd");
290 ParsePosition pos = new ParsePosition(0);
291 Date strtodate = formatter.parse(strDate, pos);
292 return strtodate;
293 }
294
295 @SuppressLint("SimpleDateFormat")
296 public static String dateToStr(java.util.Date dateDate) {
297 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
298 String dateString = formatter.format(dateDate);
299 return dateString;
300 }
301
302 /** 傳入一個String轉化為long */
303 @SuppressLint("SimpleDateFormat")
304 public static Long stringParserLong(String param) throws ParseException {
305 format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
306 return format.parse(param).getTime();
307 }
308
309 /** 當前時間轉換為long */
310 @SuppressLint("SimpleDateFormat")
311 public static Long currentDateParserLong() throws ParseException {
312 format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
313 return format.parse(format.format(Calendar.getInstance().getTime())).getTime();
314 }
315
316 /** 當前時間 如: 2013-04-22 10:37:00 */
317 @SuppressLint("SimpleDateFormat")
318 public static String getCurrentDate() {
319 format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
320 return format.format(Calendar.getInstance().getTime());
321 }
322
323 /** 當前時間 如: 10:37 */
324 @SuppressLint("SimpleDateFormat")
325 public static String getCurrentDateHHMM() {
326 format = new SimpleDateFormat("HH:mm");
327 return format.format(Calendar.getInstance().getTime());
328 }
329
330 /**
331 * 當前時間 如: 10:37
332 *
333 * @throws ParseException
334 */
335 @SuppressLint("SimpleDateFormat")
336 public static String getCurrentDateHHMMSS() {
337 format = new SimpleDateFormat("HH:mm:ss");
338 return format.format(Calendar.getInstance().getTime());
339 }
340
341 /** 當前時間 如: 20130422 */
342 @SuppressLint("SimpleDateFormat")
343 public static String getCurrentDateString() {
344 format = new SimpleDateFormat("yyyyMMddHHmm");
345 return format.format(Calendar.getInstance().getTime());
346 }
347
348 /** 當前時間 如: 2013-04-22 */
349 @SuppressLint("SimpleDateFormat")
350 public static String getCurrentTime() {
351 format = new SimpleDateFormat("yyyy-MM-dd");
352 return format.format(Calendar.getInstance().getTime());
353 }
354
355 @SuppressLint("SimpleDateFormat")
356 public static String getSWAHDate() {
357 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
358 return format.format(Calendar.getInstance().getTime());
359 }
360
361 @SuppressLint("SimpleDateFormat")
362 public static Long stringToLongD(String param) throws ParseException {
363 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
364 return format.parse(param.substring(0, param.length() - 4)).getTime();
365 }
366
367 @SuppressLint("SimpleDateFormat")
368 public static Long stringToLong(String param) throws ParseException {
369 SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmm");
370 return format.parse(param).getTime();
371 }
372
373 /**
374 * 獲取兩個日期之間的間隔天數
375 *
376 * @return
377 */
378 @SuppressLint("SimpleDateFormat")
379 public static int getGapCount(Date startDate, Date endDate) {
380 Calendar fromCalendar = Calendar.getInstance();
381 fromCalendar.setTime(startDate);
382 fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
383 fromCalendar.set(Calendar.MINUTE, 0);
384 fromCalendar.set(Calendar.SECOND, 0);
385 fromCalendar.set(Calendar.MILLISECOND, 0);
386
387 Calendar toCalendar = Calendar.getInstance();
388 toCalendar.setTime(endDate);
389 toCalendar.set(Calendar.HOUR_OF_DAY, 0);
390 toCalendar.set(Calendar.MINUTE, 0);
391 toCalendar.set(Calendar.SECOND, 0);
392 toCalendar.set(Calendar.MILLISECOND, 0);
393
394 return (int) ((toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24));
395 }
396
397 /**
398 * 日期轉換成Java字符串
399 *
400 * @param date
401 * @return str
402 */
403 @SuppressLint("SimpleDateFormat")
404 public static String DateToStr(Date date) {
405
406 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
407 String str = format.format(date);
408 return str;
409 }
410
411 /**
412 * 字符串轉換成日期
413 *
414 * @param str
415 * @return date
416 */
417 @SuppressLint("SimpleDateFormat")
418 public static Date StrToDate(String str) {
419
420 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
421 Date date = null;
422 try {
423 date = format.parse(str);
424 } catch (ParseException e) {
425 e.printStackTrace();
426 }
427 return date;
428 }
429
430 /**
431 * 字符串轉換成日期
432 *
433 * @param str
434 * @return date
435 */
436 @SuppressLint("SimpleDateFormat")
437 public static Date StrToDateDrop(String str) {
438
439 SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
440 Date date = null;
441 try {
442 date = format.parse(str);
443 } catch (ParseException e) {
444 e.printStackTrace();
445 }
446 return date;
447 }
448
449 /**
450 *
451 * @param time
452 * @return
453 */
454 @SuppressLint("SimpleDateFormat")
455 public static long getLongTime(String time) {
456 long ct = 0;
457 try {
458 format = new SimpleDateFormat("HH:mm:ss");
459 ct = format.parse(time).getTime();
460 } catch (Exception e) {
461 e.printStackTrace();
462 }
463 return ct;
464 }
465
466 /**
467 * 判斷兩日期是否同一天
468 *
469 * @param str1
470 * @param str2
471 * @return
472 */
473 @SuppressLint("SimpleDateFormat")
474 public static boolean isSameDay(String str1, String str2) {
475
476 Date day1 = null, day2 = null;
477 day1 = DateUtil.strToDate(str1);
478 day2 = DateUtil.strToDate(str2);
479
480 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
481
482 String ds1 = sdf.format(day1);
483
484 String ds2 = sdf.format(day2);
485
486 if (ds1.equals(ds2)) {
487 return true;
488 } else {
489 return false;
490 }
491
492 }
493
494 /**
495 * 獲取兩個日期的時間差
496 */
497 @SuppressLint("SimpleDateFormat")
498 public static int getTimeInterval(String date) {
499 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
500 int interval = 0;
501 try {
502 Date currentTime = new Date();// 獲取現在的時間
503 Date beginTime = dateFormat.parse(date);
504 interval = (int) ((beginTime.getTime() - currentTime.getTime()) / (1000));// 時間差
505 // 單位秒
506 } catch (ParseException e) {
507 e.printStackTrace();
508 }
509 return interval;
510 }
511
512 /**
513 * 獲取兩個日期的時間差 yyyy.MM.dd HH.mm.ss
514 */
515 @SuppressLint("SimpleDateFormat")
516 public static int getInterval(String bDate, String eDate) {
517 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
518 int interval = 0;
519 try {
520 Date currentTime = dateFormat.parse(eDate);// 獲取現在的時間
521 Date beginTime = dateFormat.parse(bDate);
522 interval = (int) ((beginTime.getTime() - currentTime.getTime()));// 時間差
523 // 單位秒
524 } catch (ParseException e) {
525 e.printStackTrace();
526 }
527 return interval;
528 }
529
530 /**
531 * 兩個時間之差 求出一個long Time
532 *
533 * @param dt1
534 * @param dt2
535 * @return
536 */
537 @SuppressLint("SimpleDateFormat")
538 public static long getTime(String date) {
539
540 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
541 long diff = 0;
542 try {
543 Date currentTime = new Date();// 獲取現在的時間
544 Date getdate = df.parse(date);
545 diff = getdate.getTime() - currentTime.getTime();
546
547 } catch (Exception e) {
548 }
549 return diff;
550 }
551
552 /**
553 * 日期轉換成Java字符串
554 *
555 * @param date
556 * @return str
557 */
558 @SuppressLint("SimpleDateFormat")
559 public static int compare_date(String DATE1, String DATE2) {
560 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
561 try {
562 Date dt1 = df.parse(DATE1);
563 Date dt2 = df.parse(DATE2);
564 if (dt1.getTime() >= dt2.getTime()) {
565 return 1;
566 } else if (dt1.getTime() < dt2.getTime()) {
567 return -1;
568 } else {
569 return 0;
570 }
571 } catch (Exception exception) {
572 exception.printStackTrace();
573 }
574 return 0;
575 }
576
577 /**
578 * 傳入時間 算出星期幾
579 *
580 * @param str
581 * 2014年1月3日
582 * @param days
583 * 1:2014年1月4日 類推
584 * @return
585 */
586 @SuppressLint("SimpleDateFormat")
587 public static String formatDate(String str, int days) {
588
589 String dateStr = "";
590 try {
591 DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
592 Date date = df.parse(str);
593 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
594 Calendar c = Calendar.getInstance();
595 Date d = dateFormat.parse(dateFormat.format(date));
596 c.setTime(d);
597 c.add(Calendar.DAY_OF_MONTH, days);
598 switch (c.get(Calendar.DAY_OF_WEEK) - 1) {
599 case 0:
600 dateStr = "周日";
601 break;
602 case 1:
603 dateStr = "周一";
604 break;
605 case 2:
606 dateStr = "周二";
607 break;
608 case 3:
609 dateStr = "周三";
610 break;
611 case 4:
612 dateStr = "周四";
613 break;
614 case 5:
615 dateStr = "周五";
616 break;
617 case 6:
618 dateStr = "周六";
619 break;
620 default:
621 break;
622 }
623 } catch (Exception e) {
624 e.printStackTrace();
625 }
626
627 return dateStr;
628 }
629 }
(轉) SpannableString與SpannableStringBuilder,spannablestring
(轉) SpannableString與SpannableStringBuilder,spannablestring前言: 曾經在一些APP中的一些類似“幫助
銷毀一個活動,銷毀活動
銷毀一個活動,銷毀活動 要銷毀一個活動很容易,只需要點一下返回鍵(在手機中點)。但是如果想在程序中自己指定,其實也很簡單,用finis
Android—PopupWindow的簡單使用,androidpopupwindow
Android—PopupWindow的簡單使用,androidpopupwindowPopupWindow 是一個可以顯示在當前 Activity 之上的浮動容器,這個
【java學習系列】 Android第一本書《第一行代碼》,第一行代碼android
【java學習系列】 Android第一本書《第一行代碼》,第一行代碼android 開始Java的學習,從Android,開始吧。《第一代碼》開始閱讀和調試demo例
ErrorExecution failed for task 'apptransformClassesWithDexForDebug',classes.dex
ErrorExecution failed for task '