你的位置:首页 > 操作系统

[操作系统]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 dateL103    *      日期104    * @return105   */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 dateL116    *      日期117    * @return118   */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 strDate129    *      字符串日期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    * @return150   */151   public static Date gainCurrentDate() {152     return new Date();153   }154 155   /**156    * 验证日期是否比当前日期早157    * 158    * @param target1159    *      比较时间1160    * @param target2161    *      比较时间2162    * @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 target182    *      需要进行运算的日期183    * @param hour184    *      小时185    * @return186   */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 target199    *      需要进行运算的日期200    * @param hour201    *      小时202    * @return203   */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-10242    * 243    * @param strDate244    * @return245   */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:34255    * 256    * @param strDate257    * @return258   */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-07269    * 270    * @param strDate271    * @return272   */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.07283    * 284    * @param strDate285    * @return286   */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:37332    * 333    * @throws ParseException334   */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    * @return377   */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 date401    * @return str402   */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 str415    * @return date416   */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 str434    * @return date435   */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 time452    * @return453   */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 str1470    * @param str2471    * @return472   */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.ss514   */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 Time532    * 533    * @param dt1534    * @param dt2535    * @return536   */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 date556    * @return str557   */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 str581    *      2014年1月3日582    * @param days583    *      1:2014年1月4日 类推584    * @return585   */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 }