JAVA 常用的工具类总结

一、StringUtils类

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 "";
    }
    
}

二、DateUtils 类

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;
    }
}
时间: 2024-08-10 03:33:25

JAVA 常用的工具类总结的相关文章

28个Java常用的工具类

源码下载:http://pan.baidu.com/s/1pJLSczD Base64.javaBase64DecodingException.javaCConst.javaCharTools.javaConfigHelper.javaCounter.javaCTool.javaDateHandler.javaDateUtil.javaDealString.javaDebugOut.javaDom4jHelper.javaEscape.javaExecHelper.javaFileHelper.

java常用的工具类

一.数组作为常用的数据结构,jdk在Arrays工具类中提供了很多有用的算法,并且根据不同的基本数据类型都有相应的重载,这里只列举名称. 接口 功能 说明 asList 将数组转换为List binarySearch 二分查找 入参必须有序,可以找到返回值>=0,否则返回小于0的值,不一定是-1 copyOf 从源数组进行复制 会截断或者扩充 copyOfRange 从源数据进行范围复制 deepEquals 多维数组的等值判断 deepHashCode 多维数组的哈希值 deepToStrin

Java常用代码工具类相关

1.HttpServletRequest转换成Map public static Map<String,String> parseXML(HttpServletRequest request) throws Exception{ Map<String,String> map = new HashMap<String,String>(); Enumeration enu=request.getParameterNames(); while(enu.hasMoreEleme

java中常用的工具类(二)

下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

java中常用的工具类(三)

继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

java中常用的工具类(一)

我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工具类 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 5

java并发编程中常用的工具类 Executor

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-4-17  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ java.util.concurrent.Executor 使用 Execut

Java语言Lang包下常用的工具类介绍_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数.你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现. 在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Webs

个人常用工具类:JAVA树形结构工具类02

JAVA树形结构工具类02 TreeNode import java.util.ArrayList; import java.util.List; /** * Created by Ace on 2017/6/12. */ public class TreeNode { protected int id; protected int parentId; List<TreeNode> children = new ArrayList<TreeNode>(); public List&