java 日期处理

import java.util.Calendar;

/**
* <pre>
* 日期时间的处理
* </pre>
* @author lidq
*
*/
public class DateUtil
{
    /**
     * 检查日期格式
     * @param year
     * @param month
     * @param day
     * @return boolean
     */
    public final static boolean chkDateFormat(int year,int month,int day) {
        try {
            /*
           // 如果输入日期不是8位的,判定为false.
            if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
                return false;
            }
            */

            if((year<2000)||(year>3000))
            {
                return false;
            }
            if((month<0)||(month>12))
            {
                return false;
            }
            if((day<0)||(day>31))
            {
                return false;
            }
           
            //当 年、月、日都有效时。
            if((year != 0)&&( month != 0 )&&( day != 0 ))
            {
                Calendar calendar =   Calendar.getInstance();
                // 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
                calendar.setLenient(false);
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONTH, month-1);
                calendar.set(Calendar.DATE, day);
               // 如果日期错误,执行该语句,必定抛出异常.
                calendar.get(Calendar.YEAR);
            }

        } catch (IllegalArgumentException e) {
            return false;
        }
        return true;
    }

    /**
     * 检查日期是否有效
     * @param year
     * @param month
     * @param day
     * @return boolean
     */
    public final static boolean chkDateValid(int year,int month,int day) {
        try {
            /*
           // 如果输入日期不是8位的,判定为false.
            if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
                return false;
            }
            */

            if((year<2000)||(year>3000))
            {
                return false;
            }
            if((month<=0)||(month>12))
            {
                return false;
            }
            if((day<=0)||(day>31))
            {
                return false;
            }
           
            //当 年、月、日都有效时。
            Calendar calendar =   Calendar.getInstance();
           
            // 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
            calendar.setLenient(false);
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month-1);
            calendar.set(Calendar.DATE, day);
           // 如果日期错误,执行该语句,必定抛出异常.
            calendar.get(Calendar.YEAR);

        } catch (IllegalArgumentException e) {
            return false;
        }
        return true;
    }

    /**
     * 检查日期是否有效
     *
     * @param year
     * @param month
     * @param day
     * @param hour
     * @param minute
     * @param second
     * @return boolean
     */
    public final static boolean chkDateValid(int year,int month,int day,int hour,int minute,int second) {
        try {
            /*
           // 如果输入日期不是8位的,判定为false.
            if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
                return false;
            }
            */

            if((year<2000)||(year>3000))
            {
                return false;
            }
            if((month<=0)||(month>12))
            {
                return false;
            }
            if((day<=0)||(day>31))
            {
                return false;
            }
           
            if((hour<0)||(hour>24))
            {
                return false;
            }
            if((minute<0)||(minute>60))
            {
                return false;
            }
            if((second<0)||(second>60))
            {
                return false;
            }
           
            //当 年、月、日都有效时。
            Calendar calendar =   Calendar.getInstance();
           
            // 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
            calendar.setLenient(false);
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month-1);
            calendar.set(Calendar.DATE, day);
            calendar.set(Calendar.HOUR_OF_DAY, hour);
            calendar.set(Calendar.MINUTE, minute);
            calendar.set(Calendar.SECOND, second);
           // 如果日期错误,执行该语句,必定抛出异常.
            calendar.get(Calendar.YEAR);

        } catch (IllegalArgumentException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 日期转化为字符串,如2007年1月2日 转为 2007010203
     * @param year
     * @param month
     * @param day
     * @return String 2007010203
     */
    public final static String praseDateToString(int year,int month,int day)
    {
        return String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day);
    }

    /**
     * 日期转化为字符串,如2007年1月2日3时4分5秒 转为 20070102030405
     * @param year
     * @param month
     * @param day
     * @param hour
     * @param minute
     * @param second
     * @return String 20070102030405
     */
    public final static String praseDateToString(int year,int month,int day,int hour,int minute,int second)
    {
        return String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day) + String.format("%02d",hour) + String.format("%02d",minute) + String.format("%02d",second);
    }

    /**
     * 日期转化为格式化字符串,如2007年1月2日3时4分5秒 转为 2007-01-02 03:04:05
     * @param year
     * @param month
     * @param day
     * @param hour
     * @param minute
     * @param second
     * @return String 2007-01-02 03:04:05
     */
    public final static String praseDateToStringFormat(int year,int month,int day,int hour,int minute,int second)
    {
        return String.format("%04d",year) + "-" + String.format("%02d",month) + "-" + String.format("%02d",day) + " " + String.format("%02d",hour) + ":" + String.format("%02d",minute) + ":" + String.format("%02d",second);
    }
   
    /**
     * 日期转化为整数,如2007年1月2日 转为 2007010203
     * @param year
     * @param month
     * @param day
     * @return long 2007010203
     */
    public final static long praseDateToLong(int year,int month,int day)
    {
        return Long.parseLong(String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day));
    }

    /**
     * 日期转化为整数,如2007年1月2日3时4分5秒 转为 20070102030405
     * @param year
     * @param month
     * @param day
     * @param hour
     * @param minute
     * @param second
     * @return long 20070102030405
     */
    public final static Long praseDateToLong(int year,int month,int day,int hour,int minute,int second)
    {
        return Long.parseLong(String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day) + String.format("%02d",hour) + String.format("%02d",minute) + String.format("%02d",second));
    }

   
    /**
     * <pre>
     * 取现在时间
     * 返回整数数组 {YYYY,MM,DD,HH,MM,SS}
     * 如:{2007,07,04,10,36,01}
     * </pre>
     */
    public final static int[] getIntDateNow() {
        int[] intNow = new int[6];
        try {
           
            Calendar calendar =   Calendar.getInstance();
            // 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
            //calendar.setLenient(false);
           
           // 如果日期错误,执行该语句,必定抛出异常.
            intNow[0] = calendar.get(Calendar.YEAR);
            intNow[1] = calendar.get(Calendar.MONTH)+1;
            intNow[2] = calendar.get(Calendar.DAY_OF_MONTH);
            intNow[3] = calendar.get(Calendar.HOUR_OF_DAY);
            intNow[4] = calendar.get(Calendar.MINUTE);
            intNow[5] = calendar.get(Calendar.SECOND);
        } catch (IllegalArgumentException e) {
            for(int i = 0;i<6; i++)
                intNow[i] = 0;
        }
        return intNow;
    }

    /**
     * <pre>
     * 取现在时间
     * 返回字符串 YYYYMMDDHHMMSS
     * 如:20070102030405
     * </pre>
     */
    public final static String getStringDateNow() {
        int[] intNow = getIntDateNow();
        return praseDateToString(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
    }

    /**
     * <pre>
     * 取现在时间
     * 返回格式化字符串 YYYY-MM-DD HH:MM:SS
     * 如:2007-01-02 03:04:05
     * </pre>
     */
    public final static String getStringDateNowFormat() {
        int[] intNow = getIntDateNow();
        return praseDateToStringFormat(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
    }
   
    /**
     * <pre>
     * 取现在时间
     * 返回Long YYYYMMDDHHMMSS
     * 如:20070102030405
     * </pre>
     */
    public final static long getLongDateNow() {
        int[] intNow = getIntDateNow();
        return praseDateToLong(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
    }

}

你可能感兴趣的:(java)