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 }