当前位置: 代码迷 >> Android >> android开发时间跟日期的代码实现工具类(一)
  详细解决方案

android开发时间跟日期的代码实现工具类(一)

热度:139   发布时间:2016-04-24 11:45:20.0
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 }

 

  相关解决方案