Java日期处理

import java.util.Calendar;

/**
 * 
 * 日期时间的处理
 * 
 * @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]);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值