1、StringUtils類java
import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import net.sf.json.JSONObject; import sun.misc.BASE64Decoder; /** * String工具 * 主要對 StringUtils 的一些方法進行重寫,達到更方便的使用 * @author cai niao * */ public class StringUtils extends org.apache.commons.lang.StringUtils{ /** * 一次性判斷多個或單個對象爲空。 * @param objects * @author cai niao * @return 只要有一個元素爲Blank,則返回true */ public static boolean isBlank(Object...objects){ Boolean result = false ; for (Object object : objects) { if(object == null || "".equals(object.toString().trim()) || "null".equals(object.toString().trim()) || "[null]".equals(object.toString().trim()) || "[]".equals(object.toString().trim())){ result = true ; break ; } } return result ; } /** * 一次性判斷多個或單個對象不爲空。 * @param objects * @author zhou-baicheng * @return 只要有一個元素不爲Blank,則返回true */ public static boolean isNotBlank(Object...objects){ return !isBlank(objects); } public static String checkNullToConvert(Object obj) { return StringUtils.isBlank(obj) ? "" : obj.toString(); } /** * 判斷一個字符串在數組中存在幾個 * @param baseStr * @param strings * @return */ public static int indexOf(String baseStr,String[] strings){ if(null == baseStr || baseStr.length() == 0 || null == strings) return 0; int i = 0; for (String string : strings) { boolean result = baseStr.equals(string); i = result ? ++i : i; } return i ; } /** * 判斷一個字符串是否爲JSONObject,是返回JSONObject,不是返回null * @param args * @return */ public static net.sf.json.JSONObject isJSONObject(Object args) { net.sf.json.JSONObject result = null ; if(args instanceof net.sf.json.JSONObject){ return (net.sf.json.JSONObject)args; } if(isBlank(args)){ return result ; } try { return net.sf.json.JSONObject.fromObject(args); } catch (Exception e) { return result ; } } /** * 判斷一個字符串是否爲JSONArray,是返回JSONArray,不是返回null * @param args * @return */ public static net.sf.json.JSONArray isJSONArray(Object args) { if(args instanceof net.sf.json.JSONArray){ return (net.sf.json.JSONArray)args; } net.sf.json.JSONArray result = null ; if(isBlank(args)){ return result ; } try { return net.sf.json.JSONArray.fromObject(args); } catch (Exception e) { return result ; } } public static String trimToEmpty(Object str){ return (isBlank(str) ? "" : str.toString().trim()); } /** * 將 Strig 進行 BASE64 編碼 * @param str [要編碼的字符串] * @param bf [true|false,true:去掉結尾補充的'=',false:不作處理] * @return */ public static String getBASE64(String str,boolean...bf) { if (StringUtils.isBlank(str)) return null; String base64 = new sun.misc.BASE64Encoder().encode(str.getBytes()) ; //去掉 '=' if(isBlank(bf) && bf[0]){ base64 = base64.replaceAll("=", ""); } return base64; } /** 將 BASE64 編碼的字符串 s 進行解碼**/ public static String getStrByBASE64(String s) { if (isBlank(s)) return ""; BASE64Decoder decoder = new BASE64Decoder(); try { byte[] b = decoder.decodeBuffer(s); return new String(b); } catch (Exception e) { return ""; } } /** * 把Map轉換成get請求參數類型,如 {"name"=20,"age"=30} 轉換後變成 name=20&age=30 * @param map * @return */ public static String mapToGet(Map<? extends Object,? extends Object> map){ String result = "" ; if(map == null || map.size() ==0){ return result ; } Set<? extends Object> keys = map.keySet(); for (Object key : keys ) { result += ((String)key + "=" + (String)map.get(key) + "&"); } return isBlank(result) ? result : result.substring(0,result.length() - 1); } /** * 把一串參數字符串,轉換成Map 如"?a=3&b=4" 轉換爲Map{a=3,b=4} * @param args * @return */ public static Map<String, ? extends Object> getToMap(String args){ if(isBlank(args)){ return null ; } args = args.trim(); //若是是?開頭,把?去掉 if(args.startsWith("?")){ args = args.substring(1,args.length()); } String[] argsArray = args.split("&"); Map<String,Object> result = new HashMap<String,Object>(); for (String ag : argsArray) { if(!isBlank(ag) && ag.indexOf("=")>0){ String[] keyValue = ag.split("="); //若是value或者key值裏包含 "="號,以第一個"="號爲主 ,如 name=0=3 轉換後,{"name":"0=3"}, 若是不知足需求,請勿修改,自行解決. String key = keyValue[0]; String value = "" ; for (int i = 1; i < keyValue.length; i++) { value += keyValue[i] + "="; } value = value.length() > 0 ? value.substring(0,value.length()-1) : value ; result.put(key,value); } } return result ; } /** * 轉換成Unicode * @param str * @return */ public static String toUnicode(String str) { String as[] = new String[str.length()]; String s1 = ""; for (int i = 0; i < str.length(); i++) { as[i] = Integer.toHexString(str.charAt(i) & 0xffff); s1 = s1 + "\\u" + as[i]; } return s1; } public static String getDoubleTOString(Double str){ String money = str.toString(); try { Double.parseDouble(money); } catch (Exception e) { BigDecimal bDecimal = new BigDecimal(str); money = bDecimal.toPlainString(); } return money; } /** * 把數組轉換成Set 方便判斷 * @param objs * @return */ public static TreeSet<String> arrayToSet(String[] objs){ TreeSet<String> result = new TreeSet<String>(); if(null ==objs){ return result ; } for (String obj:objs) { result.add(obj); } return result; } /** * 字符串轉urlcode * @param value * @return */ public static String strToUrlcode(String value){ try { value = java.net.URLEncoder.encode(value,"utf-8"); return value ; } catch (UnsupportedEncodingException e) { LoggerUtils.error(StringUtils.class, "字符串轉換爲URLCode失敗,value:" + value,e); e.printStackTrace(); return null; } } /** * urlcode轉字符串 * @param value * @return */ public static String urlcodeToStr(String value){ try { value = java.net.URLDecoder.decode(value,"utf-8"); return value ; } catch (UnsupportedEncodingException e) { LoggerUtils.error(StringUtils.class, "URLCode轉換爲字符串失敗;value:" + value,e); e.printStackTrace(); return null; } } /** * 設置JSON字符串返回 * * @param key * @param value * @return */ public static String setJsonString(String key, String value) { if (StringUtils.isNotBlank(key, value)) { JSONObject goodsJson = new JSONObject(); goodsJson.put(key, value); return goodsJson.toString(); } return ""; } /** * 替換字符串 * * @param str * @param nowStr * @param replaceStr * @return */ public static String replaceString(String str, String nowStr, String replaceStr) { nowStr = StringUtils.isBlank(nowStr) ? "" : nowStr; replaceStr = StringUtils.isBlank(replaceStr) ? "" : replaceStr; if (StringUtils.isNotBlank(str)) { return str.replaceAll(nowStr, replaceStr); } return ""; } }
2、DateUtils 類apache
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; import net.sf.json.JSONObject; import org.apache.log4j.Logger; /** * * 區分 責任人 日期 說明<br/> * <p> * 時間工具類 * <p> * @author * * */ public class DateUtils { private static Logger log = Logger.getLogger(DateUtils.class); /**當前毫秒值*/ public static long NOW_DATE_MIS =getNowTime(); /**根據方法獲取**/ public static long getNowTime(){ return new Date().getTime(); } /** * 獲取當前時間的年月日時分秒+時間戳後4位 如:20140620123456 18位 * @return */ public static String ymdhms4(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String s = sdf.format(date); double a = Math.random() * 9000 + 1000; int result = (int)a; return s + result; } /** * 把一個字符串時間轉換爲毫秒值 如 2014-12-12 12:12:12 轉換爲 1406086513619 * @param strDate * @return */ public static long str2DateTime(String strDate){ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); try { date = df.parse(strDate); } catch (ParseException pe) { pe.getStackTrace(); } return date.getTime() ; } /** * 把一個日期轉換爲指定的格式 */ public static Date str2Date(String strDate, String formater) { if (strDate == null) { return null; } if (formater == null) { formater = "yyyy-MM-dd"; } SimpleDateFormat df = new SimpleDateFormat(formater); Date date = new Date(); try { date = df.parse(strDate); } catch (ParseException pe) { pe.getStackTrace(); } return date; } /** * 獲取最大毫秒值 * @param dateStr 2014-12-12 年-月-日 參數 * @return */ public static Long getMaxMillsByYMD(String dateStr){ if(StringUtils.isBlank(dateStr)){ log.error("getTodayMaxMills error , message :param is empty"); return null; } dateStr = dateStr.trim() + " 23:59:59"; Date date = ymdHmsStr2Date(dateStr); return date.getTime() ; } /** * 獲取最小毫秒值 * @param dateStr 2014-12-12 年月日參數 * @return */ public static Long getMinxMillsByYMD(String dateStr){ if(StringUtils.isBlank(dateStr)){ log.error("getTodayMaxMills error , message :param is empty"); return null; } dateStr = dateStr.trim() + " 00:00:00"; Date date = ymdHmsStr2Date(dateStr); return date.getTime() ; } public static String getNextMonth() { Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 1);// 設爲當前月的1號 c.add(Calendar.MONTH, 1);// 加一個月,變爲下月的1號 return formaterDate(c.getTime(), "yyyy-MM"); } public static String getPreviousMonth() { Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 1);// 設爲當前月的1號 c.add(Calendar.MONTH, -1);// 減一個月,變爲上月的1號 return formaterDate(c.getTime(), "yyyy-MM"); } public static String getMonth(String date,int num) { Calendar c = Calendar.getInstance(); if(StringUtils.isNotEmpty(date)){ c.setTime(DateUtils.ymdStr2Date(date)); } c.set(Calendar.DATE, 1);// 設爲當前月的1號 c.add(Calendar.MONTH, num);// 減一個月,變爲上月的1號 return formaterDate(c.getTime(), "yyyy-MM-dd"); } /** * 計算兩個日期之間相差的月數 * @param date1 * @param date2 * @return */ public static int getMonths(Date date1, Date date2) { int iMonth = 0; int flag = 0; try { Calendar objCalendarDate1 = Calendar.getInstance(); objCalendarDate1.setTime(date1); Calendar objCalendarDate2 = Calendar.getInstance(); objCalendarDate2.setTime(date2); if (objCalendarDate2.equals(objCalendarDate1)) return 0; if (objCalendarDate1.after(objCalendarDate2)) { Calendar temp = objCalendarDate1; objCalendarDate1 = objCalendarDate2; objCalendarDate2 = temp; } if (objCalendarDate2.get(Calendar.DAY_OF_MONTH) < objCalendarDate1 .get(Calendar.DAY_OF_MONTH)) flag = 1; if (objCalendarDate2.get(Calendar.YEAR) > objCalendarDate1 .get(Calendar.YEAR)) iMonth = ((objCalendarDate2.get(Calendar.YEAR) - objCalendarDate1 .get(Calendar.YEAR)) * 12 + objCalendarDate2.get(Calendar.MONTH) - flag) - objCalendarDate1.get(Calendar.MONTH); else iMonth = objCalendarDate2.get(Calendar.MONTH) - objCalendarDate1.get(Calendar.MONTH) - flag; } catch (Exception e) { e.printStackTrace(); } return iMonth; } @SuppressWarnings("unchecked") public static List getMonthList(String startDate,String endDate){ if(StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate)) { return new ArrayList(); } List<String> dateList = new ArrayList<String>(); //獲得兩個日期之間有多少月 int num = getMonths(ymdStr2Date(startDate),ymdStr2Date(endDate)); Calendar c = Calendar.getInstance(); c.setTime(DateUtils.ymdStr2Date(startDate)); dateList.add(formaterDate(c.getTime(), "yyyy-MM")); for(int i=0; i<num; i++){ c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, 1); dateList.add(formaterDate(c.getTime(), "yyyy-MM")); } return dateList; } /** * 獲取當前星期(中國, 如:星期日,星期一,星期二) */ public static String cnWeek() { Calendar c = GregorianCalendar.getInstance(); c.setFirstDayOfWeek(Calendar.SUNDAY); String[] s = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; return s[c.get(Calendar.DAY_OF_WEEK) - 1]; } /** * 獲得當前日期 再加上你指定的天數 所獲得的新日期 * @param days * @return */ public static Date getNewDayNumDate(int days){ String today = getToday(); String newDay = getNewDayNumDate(today,days); return ymdStr2Date(newDay); } // 計算當月最後一天,返回字符串 public static String getMonthLastDay() { Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 1);// 設爲當前月的1號 c.add(Calendar.MONTH, 1);// 加一個月,變爲下月的1號 c.add(Calendar.DATE, -1);// 減去一天,變爲當月最後一天 return ymd(c.getTime()); } // 計算當月第一天,返回字符串 public static String getMonthFirstDay() { Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 1);// 設爲當前月的1號 return ymd(c.getTime()); } /** * 得到前十天時間 * * @param date * @return */ public static String getPrevTenDay(int day) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) - day); return ymdHms(c.getTime()); } /** * 獲得一個日期是周幾 */ public static String getWeekCS(Date date) { Calendar c = GregorianCalendar.getInstance(); c.setTime(date); c.setFirstDayOfWeek(Calendar.SUNDAY); String[] s = { "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" }; return s[c.get(Calendar.DAY_OF_WEEK) - 1]; } /** * 獲得一個日期是周幾 */ public static String getWeekInNum(Date date) { Calendar c = GregorianCalendar.getInstance(); c.setTime(date); int weekDayNum = c.get(Calendar.DAY_OF_WEEK)-1; if(weekDayNum == 0){ weekDayNum = 7; } return String.valueOf(weekDayNum); } /** * 取傳入時間的小時值 * @param endDate * @return */ public static String makeHour(Date endDate) { String hour = ""; if (endDate != null) { DateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String after = format.format(endDate); hour = after.substring(11, 13); } return hour; } public static String makeMini(Date endDate) { String mini = ""; if (endDate != null) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String after = format.format(endDate); mini = after.substring(14, 16); } return mini; } /** * 獲得當前時間的 小時和分(hh:mm) * @param date * @return */ public static String getHourAndMinute(Date date){ String hour = makeHour(date); String minute = makeMini(date); return hour + ":" + minute; } @SuppressWarnings("unchecked") public static List getTomorrowList() { List<String> dateList = new ArrayList<String>(); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String tomorrow = sdf.format(calendar.getTime()); dateList.add(tomorrow); for (int i = 0; i < 6; i++) { calendar.set(6, calendar.get(6) + 1); tomorrow = sdf.format(calendar.getTime()); dateList.add(tomorrow); } return dateList; } public static String getWeekStartDateString(String startDate) { return getWeekDateString(startDate, 0); } public static String getWeekEndDateString(String endDate) { return getWeekDateString(endDate, 6); } public static String getWeekDateString(String currentDate, int day) { // 日曆 Calendar calendar = new GregorianCalendar(); // 設置日曆爲當前時間 calendar.setTime(ymdStr2Date(currentDate)); // 獲得今天是周幾 int dayofweek = calendar.get(Calendar.DAY_OF_WEEK); int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR); // 加入不是週日,設置日期到下一週 if (dayofweek == 1) { calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1); } int nextWeekDay = calendar.get(Calendar.DATE); // 設置日曆爲下週第一天,+2是下週從星期一開始,星期一是每週的第2天 calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2); calendar.add(Calendar.DATE, day); return ymd(calendar.getTime()); } public static Date[] getWeekStartAndEndDate(Date currentDate, int start) { // 將要返回的日期 Date[] days = new Date[2]; if(null != currentDate){ // 日曆 Calendar calendar = new GregorianCalendar(); // 設置日曆爲當前時間 calendar.setTime(currentDate); // 獲得今天是周幾 int dayofweek = calendar.get(Calendar.DAY_OF_WEEK); int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR); // 加入不是週日,設置日期到下一週 if (dayofweek == 1) { calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1); } // 獲得當前是整年的第幾周 int nextWeekDay = calendar.get(Calendar.DATE); // 設置日曆爲下週第一天,+5是下週從星期四開始,星期四是每週的第5天 calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2); calendar.add(Calendar.DATE, start); days[0] = calendar.getTime(); days[0] = ymdHmsStr2Date(ymd(days[0]) + " 00:00:00"); calendar.add(Calendar.DATE, 6); days[1] = calendar.getTime(); days[1] = ymdHmsStr2Date(ymd(days[1]) + " 23:59:59"); } return days; } public static String[] getWeekStartAndEndDate(String currentDate, int start) { // 將要返回的日期 String[] days = new String[2]; if(StringUtils.isEmpty(currentDate)){ return days; } // 日曆 Calendar calendar = new GregorianCalendar(); // 設置日曆爲當前時間 calendar.setTime(ymdStr2Date(currentDate)); // 獲得今天是周幾 int dayofweek = calendar.get(Calendar.DAY_OF_WEEK); int weekofYear = calendar.get(Calendar.WEEK_OF_YEAR); // 加入不是週日,設置日期到下一週 if (dayofweek == 1) { if(weekofYear == 1){ weekofYear = 53; } calendar.set(Calendar.WEEK_OF_YEAR, weekofYear - 1); } // 獲得當前是整年的第幾周 int nextWeekDay = calendar.get(Calendar.DATE); calendar.set(Calendar.DATE, nextWeekDay - dayofweek + 2); calendar.add(Calendar.DATE, start); days[0] = ymd(calendar.getTime()); calendar.add(Calendar.DATE, 6); days[1] = ymd(calendar.getTime()); return days; } public static String[] getThisWeekStartEndDays() { return getWeekStartAndEndDate(ymd(new Date()), 0); } public static String[] getLastWeekStartEndDays() { return getWeekStartAndEndDate(ymd(new Date()), -7); } public static String[] getNextWeekStartEndDays() { return getWeekStartAndEndDate(ymd(new Date()), 7); } @SuppressWarnings("unchecked") public static List getWeekDateList(String date) throws ParseException { List<String> dateList = new ArrayList<String>(); Calendar calendar = Calendar.getInstance(); SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd"); Date dateVar = ymd.parse(date); calendar.setTime(dateVar); dateList.add(date); for (int i = 1; i <= 6; i++) { calendar.set(6, calendar.get(6) + 1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String tomorrow = sdf.format(calendar.getTime()); dateList.add(tomorrow); } return dateList; } public static String getNextDay(String currentDate) { Date d = ymdStr2Date(currentDate); Calendar c = Calendar.getInstance(); c.setTime(d); c.set(Calendar.DAY_OF_YEAR, c.get(Calendar.DAY_OF_YEAR) + 1); return ymd(c.getTime()); } /** * 得到開始時間和結束時間之間的時間列表 * @param startDate * @param endDate * @return List<String> * @throws ParseException */ @SuppressWarnings("unchecked") public static List getDateList(String startDate, String endDate) throws ParseException { List<String> dateList = new ArrayList<String>(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); // 設定格式 Date start = dateFormat.parse(startDate); Date end = dateFormat.parse(endDate); long day = ((end.getTime() - start.getTime()) / 1000);// 秒數 day = day / (60 * 60 * 24); // 天數 for (int i = 0; i <= day; i++) { String date = getAfterSomeDayYms(startDate, i); dateList.add(date); } return dateList; } /** * 判斷所給時間在月的第幾周 * @param date 輸入時間 * @return 第幾周 */ public static int weekOfMonth(String date) { Date d = ymdStr2Date(date); Calendar c = Calendar.getInstance(); c.setTime(d); return c.get(Calendar.WEEK_OF_MONTH); } /** * 獲取當前星期幾 */ public static int weekDay(String date) { Date d = ymdStr2Date(date); Calendar c = Calendar.getInstance(); c.setTime(d); c.setFirstDayOfWeek(Calendar.SUNDAY); return c.get(Calendar.DAY_OF_WEEK)-1; } /** * 返回日期date 前推beforHour小時後的 日期 * @param date * @param beforHour * @return */ public static Date getBeforHourDate(Date date, int beforHour){ if(date != null){ Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.HOUR, c.get(Calendar.HOUR)-beforHour); return c.getTime(); } return null; } /** * 取給定日期的前一天 * @param date * @return */ public static Date getLastDay(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 1); return calendar.getTime(); } /** * 返回兩時間的相差天數 * @param d1 * @param d2 * @return */ public static int getDayNumBetween2Date(Date d1, Date d2){ if(isEqualsInYMD(d1, d2)){ return 0; } long l = d2.getTime()-d1.getTime(); int day = (int) (l/(24*60*60*1000)); if(day < 0){ day = (-day); } int m = (int) (l%(24*60*60*1000)); Calendar c = Calendar.getInstance(); if(d1.compareTo(d2)<=0){ c.setTime(d1); c.add(Calendar.MILLISECOND, m); if(isEqualsInYMD(d1, c.getTime())){ return day; }else{ return day+1; } }else{ c.setTime(d2); c.add(Calendar.MILLISECOND, m); if(isEqualsInYMD(d2, c.getTime())){ return day; }else{ return day+1; } } } /** * 兩個時間是不是 同年 同月 同日 * 若是是,則返回true,不然返回false * @param d1 * @param d2 * @return */ public static boolean isEqualsInYMD(Date d1, Date d2){ Calendar c = Calendar.getInstance(); c.setTime(d1); int year1 = c.get(Calendar.YEAR); int dayOfYear1 = c.get(Calendar.DAY_OF_YEAR); c.setTime(d2); int year2 = c.get(Calendar.YEAR); int dayOfYear2 = c.get(Calendar.DAY_OF_YEAR); if(year1 != year2){ return false; } if(dayOfYear1 != dayOfYear2){ return false; } return true; } /** * 得到當前月的前 i 個月 * @param i (henrry) * return 月的數組 */ public static String[] getMonthArr(int i){ String arr[] = new String[i]; Calendar c = Calendar.getInstance(); int temp = 0; int tempp = 0; int year = 0; int month = 0; int m = i-1; for(int j=0;j<m;j++){ if(i>12){ temp = (i-1)/12; tempp = (i-1)%12; year = c.get(Calendar.YEAR)-temp; month = c.get(Calendar.MONTH)-tempp+1; if(month<10 && month >0){ arr[j] = year+"-0"+month; }else if(month<0){ month = 12+month; if(month<10){ arr[j] = (year-1)+"-0"+month; }else{ arr[j] = (year-1)+"-"+month; } }else if(month == 0){ arr[j] = (year-1)+"-"+12; }else{ arr[j] = year+"-"+month; } }else{ year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH)-i+2; if(month<10 && month >0){ arr[j] = year+"-0"+month; }else if(month<0){ month = 12+month; if(month<10){ arr[j] = (year-1)+"-0"+month; }else{ arr[j] = (year-1)+"-"+month; } }else if(month==0){ arr[j] = (year-1)+"-"+12; }else{ arr[j] = year+"-"+month; } } i--; } int monthNow = c.get(Calendar.MONTH); if(monthNow>8){ arr[m] = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH)+1); }else{ arr[m] = c.get(Calendar.YEAR) + "-0" + (c.get(Calendar.MONTH)+1); } return arr; } /** * 獲得兩個時間之間的差距,根據type可返回分別以天,時,分爲單位的整數 * @param d1 * @param d2 * @param type * @return */ public static int getBetweenDateGap(Date d1, Date d2, String type){ long time1 = d1.getTime(); long time2 = d2.getTime(); long m = (time1-time2)/1000; int nDay = (int)m/(24*60*60); int nHour = (int)(m-nDay*24*60*60)/(60*60); int nMinute = (int)(m-nDay*24*60*60-nHour*60*60)/60; int mSecond = (int)(m-nDay*24*60*60-nHour*60*60); if("day".equals(type)){ return nDay; }else if("minute".equals(type)){ return nMinute; }else if("hour".equals(type)){ return nHour; }else if("second".equals(type)){ return mSecond; } return nMinute; } /** * * * 經過月份計算季度 * * @param * month * * @return */ public static int getQuarter(int month) { if (month < 1 || month > 12) { throw new IllegalArgumentException("month is invalid."); } return (month - 1) / 3 + 1; } }