java 常用日期处理

import java.text.*;
import java.util.*;
/**
*


* Title: 通用工具类
*


* Description: 常用工具的集合,用来处理常见问题,比如中文乱码的方法等。
*


*


* Copyright: Copyright (c) 2003
*


*


* Company: Towery
*


*
* @author WangPinHeng
* @version 1.0
*/
public class Tools {
public Tools() {
//
}
/**
* 字符串替换,将 source 中的 oldString 全部换成 newString
*
* @param source
* 源字符串
* @param oldString
* 老的字符串
* @param newString
* 新的字符串
* @return 替换后的字符串
*/
private static String Replace(String source, String oldString,
String newString) {
StringBuffer output = new StringBuffer();
    int lengthOfSource = source.length(); // 源字符串长度  
    int lengthOfOld = oldString.length(); // 老字符串长度  

    int posStart = 0; // 开始搜索位置  
    int pos; // 搜索到老字符串的位置  

    while ((pos = source.indexOf(oldString, posStart)) >= 0) {  
        output.append(source.substring(posStart, pos));  

        output.append(newString);  
        posStart = pos + lengthOfOld;  
    }  

    if (posStart < lengthOfSource) {  
        output.append(source.substring(posStart));  
    }  

    return output.toString();  
}  

/** 
 * 转换SQL中的特殊符号,比如将单引号"'"替换为"''",以免产生SQLException 
 *  
 * @param sqlstr 
 *            原SQL 
 * @return 处理后的SQL 
 */  
public static String toSql(String sqlstr) {  
    String strsql = sqlstr;  
    if (strsql == null) {  
        return "";  
    }  
    strsql = Replace(strsql, "'", "''");  
    return strsql;  
}  

/** 
 * 将ISO8859_1编码的字符串转化为GB2312编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param ISO8859_1str 
 *            通过ISO8859_1编码的字符串 
 * @return 通过GB2312编码的字符串 
 */  
public String GBString(String ISO8859_1str) {  
    if (ISO8859_1str == null) {  
        return "";  
    } else {  
        try {  
            return new String(ISO8859_1str.getBytes("ISO8859_1"), "GB2312");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将ISO8859_1编码的字符串转化为GB2312编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param ISO8859_1str 
 *            通过ISO8859_1编码的字符串 
 * @return 通过GB2312编码的字符串 
 */  
public static String GB2312FromISO8859_1(String ISO8859_1str) {  
    if (ISO8859_1str == null) {  
        return "";  
    } else {  
        try {  
            return new String(ISO8859_1str.getBytes("ISO8859_1"), "GB2312");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

public String trim1(String str) {  
    String str1 = "";  

    if (str.substring(0, 1).equals("?")) {  
        str1 = str.substring(1, str.length());  
        System.out.println("str1=" + str1);  
    } else {  
        str1 = str;  
    }  

    return str1.trim();  
}  

public String dateformat(String str) {  
    String day = str.substring(0, 2);  
    String month = str.substring(3, 5);  
    String year = str.substring(6, 10);  
    str = year + "-" + month + "-" + day;  
    return str;  
}  

public String tenformat(String str) {  
    if (str.length() == 8) {  
        String year = str.substring(0, 4);  
        String month = "0" + str.substring(5, 6);  
        String day = "0" + str.substring(7, 8);  
        str = year + "-" + month + "-" + day;  
    } else if (str.length() == 9) {  
        if (str.substring(6, 7).equals("-")) {  
            str = str.substring(0, 5) + "0" + str.substring(5, 9);  
        } else {  
            str = str.substring(0, 8) + "0" + str.substring(8, 9);  
        }  

    }  
    return str;  
}  

/** 
 * 计算两个时间 
 *  
 * @param str 
 *            原时间,strsub,需减少的时间 
 * @return 计算后的时间 
 */  
public String subTime(String str, String strSub) {  
    String rsTime = "";  
    int hour = 0;  
    int sec = 0;  
    int secsub = 0;  
    str = trim(str);  
    strSub = trim(strSub);  
    if (str.length() == 5) {  
        hour = Integer.parseInt(str.substring(0, 2));  

        sec = Integer.parseInt(str.substring(3, 5));  

    } else if (str.length() == 4) {  
        hour = Integer.parseInt(str.substring(0, 1));  

        sec = Integer.parseInt(str.substring(2, 4));  

    }  
    if (trim(strSub).length() == 5) {  
        secsub = Integer.parseInt(strSub.substring(0, 2));  

    } else if (trim(strSub).length() == 4) {  
        secsub = Integer.parseInt(strSub.substring(0, 1));  

    }  

    //int a = sec + secsub;  
    if (sec < secsub) {  
        //System.out.println("sub <");  
        String jstr = Integer.toString(sec + 60 - secsub);  
        String hstr = Integer.toString(hour - 1);  
        //System.out.println("jstr="+jstr);  
        //System.out.println("hstr="+hstr);  
        if (jstr.length() == 1) {  
            jstr = "0" + jstr;  
        }  
        if (hstr.length() == 1) {  
            hstr = "0" + hstr;  
        }  
        rsTime = hstr + ":" + jstr;  

    } else if (sec == secsub) {  
        //System.out.println("sub =");  
        String strh = Integer.toString(hour);  
        //System.out.println("strh="+strh);  
        if (strh.length() == 1) {  
            strh = "0" + strh;  
        }  
        rsTime = strh + ":00";  

    } else if (sec > secsub) {  
        //System.out.println("sub >");  
        String jstr = Integer.toString(sec - secsub);  
        //System.out.println("jstr="+jstr);  
        String hstr = Integer.toString(hour);  
        //System.out.println("hstr="+hstr);  
        if (jstr.length() == 1) {  
            jstr = "0" + jstr;  
        }  
        if (hstr.length() == 1) {  
            hstr = "0" + hstr;  
        }  
        rsTime = hstr + ":" + jstr;  

    }  
    return rsTime;  
}  

public String toSENDstr(String input) {  
    String r = input;  
    r = replace(r, "&", "");  
    r = replace(r, "/", "|");  
    r = replace(r, "/r", "");  
    r = replace(r, "/n", "");  
    r = replace(r, "'", "");  
    r = replace(r, " ", "");  
    return r;  
}  

public String replace(String str, String strOld, String strNew) {  
    String r = str;  
    if (str != null && strOld != null && strNew != null) {  
        int idx = str.indexOf(strOld);  
        if (idx != -1) {  
            String strPre = "";  
            r = "";  
            String strSuf = str;  
            for (; idx != -1; idx = strSuf.indexOf(strOld)) {  
                strPre = strSuf.substring(0, idx);  
                strSuf = strSuf.substring(idx + strOld.length());  
                r = r + strPre + strNew;  
            }  

            r = r + strSuf;  
        }  
    }  
    return r;  
}  

/** 
 * 计算两个时间相差的分钟数 
 *  
 * @param time1 
 *            string,time2,string 
 * @return string 
 */  
public String diffTime(String time1, String time2) {  
    String rsTime = "";  
    int hour = 0;  
    int hour2 = 0;  
    int sec = 0;  
    int sec2 = 0;  
    String str1 = trim(time1);  
    String str2 = trim(time2);  
    if (str1.length() == 5) {  
        hour = Integer.parseInt(str1.substring(0, 2));  

        sec = Integer.parseInt(str1.substring(3, 5));  

    } else if (str1.length() == 4) {  
        hour = Integer.parseInt(str1.substring(0, 1));  

        sec = Integer.parseInt(str1.substring(2, 4));  

    }  
    if (str2.length() == 5) {  
        hour2 = Integer.parseInt(str2.substring(0, 2));  

        sec2 = Integer.parseInt(str2.substring(3, 5));  

    } else if (str2.length() == 4) {  
        hour2 = Integer.parseInt(str2.substring(0, 1));  

        sec2 = Integer.parseInt(str2.substring(2, 4));  

    }  

    //int a = sec + secsub;  
    if (sec < sec2) {  
        //System.out.println("sub <");  
        String jstr = Integer.toString(sec + 60 - sec2);  
        if (jstr.length() == 1) {  
            jstr = "0" + jstr;  
        }  
        if ((hour - 1) != hour2) {  

            String hstr = Integer.toString(hour - 1 - hour2);  

            if (hstr.length() == 1) {  
                hstr = "0" + hstr;  
            }  
            rsTime = hstr + ":" + jstr + ":00";  
        } else {  
            rsTime = jstr + ":00";  
        }  
    } else if (sec == sec2) {  
        //System.out.println("sub =");  
        if (hour != hour2) {  

            String strh = Integer.toString(hour - hour2);  
            //System.out.println("strh="+strh);  
            if (strh.length() == 1) {  
                strh = "0" + strh;  
            }  
            rsTime = strh + ":00" + ":00";  
        } else {  
            rsTime = "00:00";  
        }  
    } else if (sec > sec2) {  
        //System.out.println("sub >");  
        String jstr = Integer.toString(sec - sec2);  
        //System.out.println("jstr="+jstr);  
        if (jstr.length() == 1) {  
            jstr = "0" + jstr;  
        }  
        if (hour != hour2) {  
            String hstr = Integer.toString(hour - hour2);  
            //System.out.println("hstr="+hstr);  
            if (hstr.length() == 1) {  
                hstr = "0" + hstr;  
            }  
            rsTime = hstr + ":" + jstr + ":00";  
        } else {  
            rsTime = jstr + ":00";  
        }  
    }  
    return rsTime;  
}  

/** 
 * 计算两个时间 
 *  
 * @param str 
 *            原时间,stradd,需增加的时间 
 * @return 计算后的时间 
 */  
public String addTime(String str, String stradd) {  
    String rsTime = "";  
    int hour = 0;  
    int sec = 0;  
    int secadd = 0;  
    int houradd = 0;  
    str = trim(str);  
    stradd = trim(stradd);  
    if (str.length() == 5) {  
        hour = Integer.parseInt(str.substring(0, 2));  

        sec = Integer.parseInt(str.substring(3, 5));  

    } else if (str.length() == 4) {  
        hour = Integer.parseInt(str.substring(0, 1));  

        sec = Integer.parseInt(str.substring(2, 4));  

    }  
    if (trim(stradd).length() == 5) {  

        secadd = Integer.parseInt(stradd.substring(0, 2));  

    } else if (trim(stradd).length() == 4) {  
        secadd = Integer.parseInt(stradd.substring(0, 1));  

    } else if (trim(stradd).length() == 7) {  
        houradd = Integer.parseInt(stradd.substring(0, 1));  
        secadd = Integer.parseInt(stradd.substring(2, 4));  
    }  
    int a = sec + secadd;  
    if (a < 60) {  
        String stra = Integer.toString(a);  
        String strh = Integer.toString(hour + houradd);  
        if (stra.length() == 1) {  
            stra = "0" + stra;  
        }  
        if (strh.length() == 1) {  
            strh = "0" + strh;  
        } else if (Integer.parseInt(strh) > 24) {  
            int h = Integer.parseInt(strh) / 24;  
            strh = Integer.toString(h);  
            if (h < 10) {  
                strh = "0" + Integer.toString(h);  
            }  
        }  
        rsTime = strh + ":" + stra;  

    } else if (a == 60) {  
        String strh = Integer.toString(hour + houradd + 1);  
        if (strh.length() == 1) {  
            strh = "0" + strh;  
        } else if (Integer.parseInt(strh) > 24) {  
            int h = Integer.parseInt(strh) / 24;  
            strh = Integer.toString(h);  
            if (h < 10) {  
                strh = "0" + Integer.toString(h);  
            }  
        }  
        rsTime = strh + ":00";  

    } else if (a > 60) {  
        int i = a / 60;  
        int j = a % 60;  
        String strj = Integer.toString(j);  

        if (strj.length() == 1) {  
            strj = "0" + strj;  
        }  
        String strh = Integer.toString(hour + houradd + i);  
        if (strh.length() == 1) {  
            strh = "0" + strh;  
        } else if (Integer.parseInt(strh) > 24) {  
            int h = Integer.parseInt(strh) / 24;  
            strh = Integer.toString(h);  
            if (h < 10) {  
                strh = "0" + Integer.toString(h);  
            }  
        }  
        rsTime = strh + ":" + strj;  

        if (j == 0) {  
            rsTime = strh + ":00";  

        }  

    }  
    return rsTime;  
}  

/** 
 * 将UTF编码的字符串转化为GB2312编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param UTF 
 *            通过UTF编码的字符串 
 * @return 通过GB2312编码的字符串 
 */  
public static String GB2312FromUTF(String UTF) {  
    if (UTF == null) {  
        return "";  
    } else {  
        try {  
            return new String(UTF.getBytes("UTF-8"), "GB2312");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将GB2312编码的字符串转化为UTF-8编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param GB2312 
 *            通过GB2312编码的字符串 
 * @return 通过UTF-8编码的字符串 
 */  
public static String UTFFromGB2312(String GB2312) {  
    if (GB2312 == null) {  
        return "";  
    } else {  
        try {  
            return new String(GB2312.getBytes("GB2312"), "UTF-8");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

public static String GBKFromISO8859_1(String ISO8859_1) {  
    if (ISO8859_1 == null) {  
        return "";  
    } else {  
        try {  
            return new String(ISO8859_1.getBytes("ISO8859_1"), "GBK");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

public static String GBKFromUTF(String UTF) {  
    if (UTF == null) {  
        return "";  
    } else {  
        try {  
            return new String(UTF.getBytes("UTF-8"), "GBK");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将ISO8859_1编码的字符串转化为UTF-8编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param ISO8859_1str 
 *            通过ISO8859_1编码的字符串 
 * @return 通过UTF-8编码的字符串 
 */  
public static String UTFFromISO8859_1(String ISO8859_1str) {  
    return ISO8859_1str;  
}  

public static String UTFFromGBK(String GBK) {  
    if (GBK == null) {  
        return "";  
    } else {  
        try {  
            return new String(GBK.getBytes("GBK"), "UTF-8");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将UTF-8编码的字符串转化为ISO8859_1编码的字符串,主要用来处理中文显示乱码的问题 
 *  
 * @param UTF 
 *            通过UTF编码的字符串 
 * @return 通过ISO8859_1编码的字符串 
 */  
public static String ISO8859_1FromUTF(String UTFstr) {  
    if (UTFstr == null) {  
        return "";  
    } else {  
        try {  
            return new String(UTFstr.getBytes("UTF-8"), "ISO8859_1");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将GB2312编码的字符串转化为ISO8859_1编码的字符串 
 *  
 * @param GBstr 
 *            GB2312编码的字符串 
 * @return ISO8859_1编码的字符串 
 */  
public static String ISO8859_1String(String GBstr) {  
    if (GBstr == null) {  
        return "";  
    } else {  
        try {  
            return new String(GBstr.getBytes("GB2312"), "ISO8859_1");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 将GB2312编码的字符串转化为ISO8859_1编码的字符串 
 *  
 * @param GBstr 
 *            GB2312编码的字符串 
 * @return ISO8859_1编码的字符串 
 */  
public String ISO8859_1FromGB2312(String GBstr) {  
    if (GBstr == null) {  
        return "";  
    } else {  
        try {  
            return new String(GBstr.getBytes("GB2312"), "ISO8859_1");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

public static String ISO8859_1FromGBK(String GBK) {  
    if (GBK == null) {  
        return "";  
    } else {  
        try {  
            return new String(GBK.getBytes("GBK"), "ISO8859_1");  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
    }  
}  

/** 
 * 去除字符串两端空格。 
 *  
 * @param str 
 *            需要处理的字符串 
 * @return 去掉了两端空格的字符串,如果str 为 null 则返回 "" 
 */  
public static String trim(String str) {  
    if (str != null) {  
        return str.trim();  
    } else {  
        return "";  
    }  
}  

//  static public String mm_dd_yyyy = "MM-dd-yyyy HH:mm:ss";  
/** 
 * 获得当前年份 
 *  
 * @return 当前年份,格式如:2003 
 */  
public static int getCurrentYear() {  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");  
    return Integer.parseInt(sdf.format(new java.util.Date()));  
}  

/** 
 * 获得当前月份 
 *  
 * @return 当前月份 
 */  
public static int getCurrentMonth() {  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M");  
    return Integer.parseInt(sdf.format(new java.util.Date()));  
}  

/** 
 * 获得当前天 
 *  
 * @return 当前天 
 */  
public static int getCurrentDay() {  
    Calendar calendar = Calendar.getInstance();  
    return calendar.get(Calendar.DATE);  
}  

public static String getCurrentDateTime() {  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd H:mm");  
    return sdf.format(new Date());  
}  

/** 
 * 获得形如 19770608 格式的当前年月日 
 *  
 * @return 当前年月日 
 */  
public static String getSimpleCurrentDate() {  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyyMMdd HH:mm:ss");  
    return sdf.format(new java.util.Date());  
}  

/** 
 * 返回两个日期相差天数 
 *  
 * @param d1 
 *            日期 
 * @param d2 
 *            日期 
 * @return 天数 
 */  
public int diffDate(Date d1, Date d2) {  
    if ((d1 == null) || (d2 == null))  
        return 0;  

    Calendar cal = Calendar.getInstance();  

    // from Locale, has nothing to do with your input date format  
    int zoneoffset = cal.get(Calendar.ZONE_OFFSET);  
    int dstoffset = cal.get(Calendar.DST_OFFSET);  

    // getTime() return absolute GMT time  
    // compensate with the offsets  
    long dl1 = d1.getTime() + zoneoffset + dstoffset;  
    long dl2 = d2.getTime() + zoneoffset + dstoffset;  

    int intDaysFirst = (int) (dl1 / (60 * 60 * 1000 * 24)); //60*60*1000  
    int intDaysSecond = (int) (dl2 / (60 * 60 * 1000 * 24));  

    return intDaysFirst > intDaysSecond ? intDaysFirst - intDaysSecond  
            : intDaysSecond - intDaysFirst;  
}  

/** 
 * 将给定的时间转换为格式是8位的字符串 
 *  
 * @param date 
 *            给定的时间 
 * @return 格式化后的字符串形式的时间 
 */  
public String get8BitDate(java.util.Date date) {  
    if (date == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyyMMdd");  
    return sdf.format(date);  
}  

public String to_date(String strdate, String df) {  
    if (strdate == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd HH:mm:ss");  
    java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat(  
            "M/d/yyyy H:m:s");  
    Date d = null;  
    try {  
        d = sdf1.parse(strdate);  
    } catch (ParseException ex) {  
        ex.printStackTrace();  
    }  
    return sdf.format(d);  
}  

public static String get8BitString(String strDate) {  
    if (strDate == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(  
            "yyyyMMdd");  
    Date d = null;  
    try {  
        d = sdf.parse(strDate);  
    } catch (ParseException ex) {  
        ex.printStackTrace();  
    }  
    return sdf2.format(d);  
}  

public static String get8ByteTo10Byte(String strDate) {  
    if (strDate == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyyMMdd");  
    java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    Date d = null;  
    try {  
        d = sdf.parse(strDate);  
    } catch (ParseException ex) {  
        ex.printStackTrace();  
    }  
    return sdf2.format(d);  
}  

public static String getStandedDateTime(String strDate) {  
    if (strDate == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    Date d = null;  
    try {  
        d = sdf.parse(strDate);  
    } catch (ParseException ex) {  
        ex.printStackTrace();  
    }  
    return sdf2.format(d);  
}  

public static String getMonthDay(java.util.Date date) {  
    if (date == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M月d日");  
    return sdf.format(date);  
}  

public static String getHourMinute(java.util.Date date) {  
    if (date == null) {  
        return "";  
    }  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("H:mm");  
    return sdf.format(date);  
}  

/** 
 * 判断字符串是否符合日期格式 
 *  
 * @param str 
 *            字符串时间 
 * @return 
 */  
public static boolean isDate(String strDate) {  
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    sdf.setLenient(false);  
    try {  
        sdf.parse(strDate);  
        return true;  
    } catch (ParseException ex) {  
        return false;  
    }  
}  

/** 
 * 判断是否是数字 
 *  
 * @param str 
 * @return 
 */  
public static boolean isNumber(String strNumber) {  
    boolean bolResult = false;  
    try {  
        Double.parseDouble(strNumber);  
        bolResult = true;  
    } catch (NumberFormatException ex) {  
        bolResult = false;  
    }  
    return bolResult;  
}  

public String dateadd(Date strDate, int a) {  
    String str = "";  

    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(  
            "yyyy-MM-dd");  
    String strDate1 = sdf.format(strDate);  

    int year = Integer.parseInt(strDate1.substring(0, 4));  
    int month = Integer.parseInt(strDate1.substring(5, 7));  
    int day = Integer.parseInt(strDate1.substring(8, 10));  
    int md = getdayformonth(month);  
    int i = (day + a) / md;  
    int j = (day + a) % md;  
    if (j == 0) {  
        i = i - 1;  
        j = md;  
    }  
    String strmon = "";  
    String strday = "";  
    String mondiff = "";  
    if (i < 2) {  
        if (Integer.toString(j).length() == 1) {  
            strday = "0" + Integer.toString(j);  
        } else {  
            strday = Integer.toString(j);  
        }  
        if ((month + i) > 12) {  
            int yeardiff = (month + i) / 12;  
            int monthmod = (month + i) % 12;  
            mondiff = Integer.toString(monthmod);  
            if (Integer.toString(monthmod).length() == 1) {  
                mondiff = "0" + Integer.toString(monthmod);  
            }  
            str = Integer.toString(year + yeardiff) + "-" + mondiff + "-"  
                    + strday;  
        } else {  
            strmon = Integer.toString(month + i);  
            if (Integer.toString(month + i).length() == 1) {  
                strmon = "0" + Integer.toString(month + i);  
            }  

            str = Integer.toString(year) + "-" + strmon + "-" + strday;  

        }  
    } else {  
        //主要判断假如天数,月份溢出的处理,  
    }  
    return str;  
}  

public int getdayformonth(int month) {  
    int a = 0;  
    switch (month) {  
    case 1:  
        a = 31;  
        break;  
    case 2:  
        a = 28;  
        break;  
    case 3:  
        a = 31;  
        break;  
    case 4:  
        a = 30;  
        break;  
    case 5:  
        a = 31;  
        break;  
    case 6:  
        a = 30;  
        break;  
    case 7:  
        a = 31;  
        break;  
    case 8:  
        a = 31;  
        break;  
    case 9:  
        a = 30;  
        break;  
    case 10:  
        a = 31;  
        break;  
    case 11:  
        a = 30;  
        break;  
    case 12:  
        a = 31;  
        break;  
    default:  

    }  
    return a;  
}  

public String addOneDay(String strDate) //YYYY-MM-DD  
{  
    int[] standardDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };  
    int[] leapyearDays = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };  
    int y = Integer.parseInt(strDate.substring(0, 4));  
    int m = Integer.parseInt(strDate.substring(4, 6));  
    int d = Integer.parseInt(strDate.substring(6, 8)) + 1;  
    int maxDateCount = 0;  

    System.out.println(y);  
    System.out.println(m);  
    System.out.println(d);  

    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {  
        maxDateCount = leapyearDays[m - 1];  
    } else {  
        maxDateCount = standardDays[m - 1];  
    }  

    if (d > maxDateCount) {  
        d = 1;  
        m++;  
    }  

    if (m > 12) {  
        m = 1;  
        y++;  
    }  
    java.text.DecimalFormat yf = new java.text.DecimalFormat("0000");  
    java.text.DecimalFormat mdf = new java.text.DecimalFormat("00");  
    return yf.format(y) + mdf.format(m) + mdf.format(d);  
}  

public static String subOneDay(String strDate) {  
    //YYYY-MM-DD  
    int[] standardDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };  
    int[] leapyearDays = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };  
    int y = Integer.parseInt(strDate.substring(0, 4));  
    int m = Integer.parseInt(strDate.substring(4, 6));  
    int d = Integer.parseInt(strDate.substring(6, 8)) - 1;  
    int maxDateCount = 0;  

    System.out.println(y);  
    System.out.println(m);  
    System.out.println(d);  

    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {  
        maxDateCount = leapyearDays[m - 1];  
    } else {  
        maxDateCount = standardDays[m - 1];  
    }  

    if (d > maxDateCount) {  
        d = 1;  
        m++;  
    }  

    if (m > 12) {  
        m = 1;  
        y++;  
    }  
    java.text.DecimalFormat yf = new java.text.DecimalFormat("0000");  
    java.text.DecimalFormat mdf = new java.text.DecimalFormat("00");  
    return yf.format(y) + mdf.format(m) + mdf.format(d);  
}  

public static void main(String[] argv) {  
    System.out.println(Tools.getMonthDay(new java.util.Date()));  
    System.out.println(Tools.getHourMinute(new java.util.Date()));  

}  

}

引用原文http://blog.csdn.net/assureo/article/details/5868220

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
log4j2

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

private static final Logger log = LogManager.getLogger(xxxx.class);

//根据类似"2015-09"String值求上个月份
public static String lastmonth(String oldFeeMonth) {
    String m = oldFeeMonth.substring(5);
    String y = oldFeeMonth.substring(0, 4);
    Integer i = Integer.parseInt(m) - 1;
    Integer yi = Integer.parseInt(y);
    String lastmth;
    if (i == 0) {
        i = 12;
        yi = yi - 1;
        lastmth = yi + "-" + i;
    } else if (i > 0 && i < 10) {
        lastmth = y + "-0" + i;
    } else if (i >= 10) {
        lastmth = y + "-" + i.toString();
    } else {
        i = 12;
        yi = yi - 1;
        lastmth = yi + "-" + i;
    }
    return lastmth;
}

//根据类似"2015-09"String值求下个月份
public static String nextMonth(String month) {
    String m = month.substring(5);
    String y = month.substring(0, 4);
    Integer i = Integer.parseInt(m) + 1;
    Integer yi = Integer.parseInt(y);
    String nextmth;
    if (i < 10) {
        nextmth = y + "-0" + i;
    } else if (i >= 10 && i <= 12) {
        nextmth = y + "-" + i;
    } else {
        i = 1;
        yi = yi + 1;
        nextmth = yi + "-0" + i;
    }
    return nextmth;
}

//求某个月份的天数
public static int daysThismonth(int year, int month) {
    int[] month1 = {1, 3, 5, 7, 8, 10, 12};
    int[] month2 = {4, 6, 9, 11};
    int daysThismonth = 30;

    if (year % 4 == 0) {
        boolean flag = false;
        for (int i : month1) {
            if (i == month) {
                daysThismonth = 31;
                flag = true;
                break;
            } else {
                flag = false;
            }
        }
        if (!flag) {
            for (int i : month2) {
                if (i == month) {
                    daysThismonth = 30;
                    flag = true;
                    break;
                } else {
                    flag = false;
                }
            }
            if (!flag) {
                daysThismonth = 29;
            }
        }
    } else {
        boolean flag = false;
        for (int i : month1) {
            if (i == month) {
                daysThismonth = 31;
                flag = true;
                break;
            } else {
                flag = false;
            }
        }
        if (!flag) {
            for (int i : month2) {
                if (i == month) {
                    daysThismonth = 30;
                    flag = true;
                    break;
                } else {
                    flag = false;
                }
            }
            if (!flag) {
                daysThismonth = 28;
            }
        }
    }
    return daysThismonth;
}

/**
 * 给定一个日期,返回这个月的最后一天
 * @param date
 * @return
 */
public static Date getLastDayThisMonth(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    Date lastDayThisMonth = calendar.getTime();
    lastDayThisMonth.setDate(lastDay);
    return lastDayThisMonth;
}

/**
 * 给定一个日期,返回这个星期的首日(中式)
 */
public static Date getFirstDayThisWeek(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    long whichDay = calendar.get(Calendar.DAY_OF_WEEK);

    if (whichDay == 1) {
        calendar.add(Calendar.DATE, -6);
    } else {
        int days = (int)whichDay - 2;
        calendar.add(Calendar.DATE, -days);
    }
    Date firstDay = calendar.getTime();
    return firstDay;
}


//  给定日期加x天  
public static Date  addSomeDay(Date date,int y){
     Calendar calendar = new GregorianCalendar(); 
     calendar.setTime(date); 
     calendar.add(calendar.DATE,y);//把日期往后增加一天.整数往后推,负数往前移动 
     Date newDate =calendar.getTime(); 
    return newDate;
  }


/**
 * 给定一个日期,返回这个月的第一天    
 * @param date
 * @return
 */
public static Date getfirstDayThisMonth(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int lastDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
    Date lastDayThisMonth = calendar.getTime();
    lastDayThisMonth.setDate(lastDay);
    return lastDayThisMonth;
}

}

//—————————————————–
function getNowFormatDate()
{
var day = new Date();
var Year = 0;
var Month = 0;
var Day = 0;
var CurrentDate = “”;
Year = day.getFullYear();
Month = day.getMonth() + 1;
Day = day.getDate();
CurrentDate += Year + “-“;
if (Month >= 10)
{
CurrentDate += Month + “-“;
}
else
{
CurrentDate += “0” + Month + “-“;
}
if (Day >= 10)
{
CurrentDate += Day;
}
else
{
CurrentDate += “0” + Day;
}
return CurrentDate;
}

//标题过长截取显示
js.put(“title”, title.length() >= 18 ? title.substring(0,18)+”…”: title;

你可能感兴趣的:(java常用日期处理)