开发手册 欢迎您!
软件开发者资料库

Java 时间日期字符串获取处理工具类

本文主要介绍Java中,获取指定格式时间日期字符串,时间日期字符串处理转换及判断等工具类。

package com.wonhero.utils.util;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;public class DateUtil {    private static DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");    public static final String LAST_TIME = "2038-01-01 00:00:00";    private static Map formats = new HashMap();    public static final String DATE_FORMATE_STRING_DEFAULT = "yyyyMMddHHmmss";    public static final String DATE_FORMATE_STRING_A = "yyyy-MM-dd HH:mm:ss";    public static final String DATE_FORMATE_STRING_B = "yyyy-MM-dd";    public static final String DATE_FORMATE_STRING_C = "MM/dd/yyyy HH:mm:ss a";    public static final String DATE_FORMATE_STRING_D = "yyyy-MM-dd HH:mm:ss a";    public static final String DATE_FORMATE_STRING_E = "yyyy-MM-dd'T'HH:mm:ss'Z'";    public static final String DATE_FORMATE_STRING_F = "yyyy-MM-dd'T'HH:mm:ssZ";    public static final String DATE_FORMATE_STRING_G = "yyyy-MM-dd'T'HH:mm:ssz";    public static final String DATE_FORMATE_STRING_H = "yyyyMMdd";    public static final String DATE_FORMATE_STRING_I = "yyyy-MM-dd HH:mm:ss.SSS";    public static final String DATE_FORMATE_STRING_J = "yyyyMMddHHmmss.SSS";    public static final String DATE_FORMATE_STRING_K = "yyyyMMddHHmmssSSS";    public static final String DATE_FORMATE_STRING_L = "MMdd";    static {        formats.put("yyyyMMddHHmmss", new SimpleDateFormat("yyyyMMddHHmmss"));        formats.put("yyyy-MM-dd HH:mm:ss", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));        formats.put("yyyy-MM-dd", new SimpleDateFormat("yyyy-MM-dd"));        formats.put("MM/dd/yyyy HH:mm:ss a", new SimpleDateFormat("MM/dd/yyyy HH:mm:ss a"));        formats.put("yyyy-MM-dd HH:mm:ss a", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a"));        formats.put("yyyy-MM-dd'T'HH:mm:ss'Z'", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"));        formats.put("yyyy-MM-dd'T'HH:mm:ssZ", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"));        formats.put("yyyy-MM-dd'T'HH:mm:ssz", new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"));        formats.put("yyyyMMdd", new SimpleDateFormat("yyyyMMdd"));        formats.put("yyyy-MM-dd HH:mm:ss.SSS", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));        formats.put("yyyyMMddHHmmss.SSS", new SimpleDateFormat("yyyyMMddHHmmss.SSS"));        formats.put("yyyyMMddHHmmssSSS", new SimpleDateFormat("yyyyMMddHHmmssSSS"));        formats.put("MMdd", new SimpleDateFormat("MMdd"));    }    /**     * 返回 yyyyMMddhhmmss 格式的日期串     *     * @return     */    public static String getyyyyMMddhhmmssDateString() {        return dateFormat.format(new Date());    }    /**     * 获取当前时间     *     * @return     */    public static Date getCurrentDate() {        Calendar calendar = Calendar.getInstance();        return calendar.getTime();    }    /**     * 获取当前月     *     * @return     */    public static int getCurrentMonth() {        Calendar calendar = Calendar.getInstance();        return calendar.get(Calendar.MONTH) + 1;    }    public static Date getLastDate() throws ParseException {        return getDateFromString("2037-12-01", DATE_FORMATE_STRING_B);    }    /**     * 转TimeStamp     *     * @param date     * @return     */    public static Timestamp getTimestamp(Date date) {        Timestamp timestamp = new Timestamp(date.getTime());        return timestamp;    }    /**     * 获取未来时间     *     * @param second 秒     * @return     */    public static Date getFutureDate(int second) {        Calendar calendar = Calendar.getInstance();        calendar.add(Calendar.SECOND, second);        return calendar.getTime();    }    public static String getFormatTimeString(Date date, String pattern) {        SimpleDateFormat sDateFormat = getDateFormat(pattern);        synchronized (sDateFormat) {            return sDateFormat.format(date);        }    }    public static String getDefaultFormateTimeString(Date date) {        return getFormatTimeString(date, "yyyyMMddHHmmss");    }    public static SimpleDateFormat getDateFormat(String pattern) {        SimpleDateFormat sDateFormat = (SimpleDateFormat) formats.get(pattern);        if (sDateFormat == null) {            sDateFormat = new SimpleDateFormat(pattern);            formats.put(pattern, sDateFormat);        }        return sDateFormat;    }    public static Date getDateFromString(String date, String pattern)            throws ParseException {        SimpleDateFormat sDateFormat = getDateFormat(pattern);        synchronized (sDateFormat) {            return sDateFormat.parse(date);        }    }    public static Date getDefaultDateFromString(String date)            throws ParseException {        return getDateFromString(date, "yyyyMMddHHmmss");    }    public static String getNowDefault() {        return getNow("yyyyMMddHHmmss");    }    public static String getNow(String pattern) {        return getFormatTimeString(new Date(), pattern);    }    public static String getLastTime() {        return LAST_TIME;    }    public static String getNowII() {        return getFormatTimeString(new Date(), "yyyyMMdd");    }    public static long dateString2Long(String str, String pattern)            throws ParseException {        return getDateFromString(str, pattern).getTime();    }    /**     * 校验字符串是否可以格式化为时间     *     * @param str     * @param pattern     * @return     */    public static boolean judgeDate(String str, String pattern) {        try {            dateString2Long(str, pattern);        } catch (Exception e) {            return false;        }        return true;    }    public static String longToDateStringDefault(long time) {        return getFormatTimeString(new Date(time), "yyyyMMddHHmmss");    }    public static String longToDateString(long time, String pattern) {        return getFormatTimeString(new Date(time), pattern);    }    public static long date2Long(Date date) {        return date.getTime();    }    public static Date longToDate(long time) {        return new Date(time);    }    public static Date getDateFromStringAdaptTwoPattern(String date)            throws ParseException {        try {            return getDateFromString(date, "yyyy-MM-dd HH:mm:ss");        } catch (ParseException e) {        }        return getDateFromString(date, "yyyy-MM-dd");    }    public static String changeNumDateToDate(String numdate, String inFormat, String outFormat)            throws ParseException {        Date date = getDateFromString(numdate, inFormat);        return getFormatTimeString(date, outFormat);    }    public static String getNextMonthFistDay(String nowdate, String inFormat, String outFormat)            throws ParseException {        Date date = getDateFromString(nowdate, inFormat);        Calendar cl = Calendar.getInstance();        cl.setTime(date);        cl.set(2, cl.get(2) + 1);        cl.set(5, 1);        date = cl.getTime();        return getFormatTimeString(date, outFormat);    }    public static boolean isLeapYear(int year) {        if (year % 400 == 0)            return true;        if (year % 4 == 0) {            return (year % 100 != 0);        }        return false;    }    public static String getLastDay(String nowdate, String inFormat, String outFormat)            throws ParseException {        String returndate = "";        Date date = getDateFromString(nowdate, inFormat);        Calendar cl = Calendar.getInstance();        cl.setTime(date);        switch (cl.get(2)) {            case 0:                cl.set(5, 31);                break;            case 1:                int year = cl.get(1);                if (isLeapYear(year))                    cl.set(5, 29);                else {                    cl.set(5, 28);                }                break;            case 2:                cl.set(5, 31);                break;            case 3:                cl.set(5, 30);                break;            case 4:                cl.set(5, 31);                break;            case 5:                cl.set(5, 30);                break;            case 6:                cl.set(5, 31);                break;            case 7:                cl.set(5, 31);                break;            case 8:                cl.set(5, 30);                break;            case 9:                cl.set(5, 31);                break;            case 10:                cl.set(5, 30);                break;            case 11:                cl.set(5, 31);        }        date = cl.getTime();        returndate = getFormatTimeString(date, outFormat);        return returndate;    }    public static String getMonthLastDay(String fmt) {        String returndate = "";        Date date = null;        Calendar cl = Calendar.getInstance();        switch (cl.get(2)) {            case 0:                cl.set(5, 31);                break;            case 1:                int year = cl.get(1);                if (isLeapYear(year))                    cl.set(5, 29);                else {                    cl.set(5, 28);                }                break;            case 2:                cl.set(5, 31);                break;            case 3:                cl.set(5, 30);                break;            case 4:                cl.set(5, 31);                break;            case 5:                cl.set(5, 30);                break;            case 6:                cl.set(5, 31);                break;            case 7:                cl.set(5, 31);                break;            case 8:                cl.set(5, 30);                break;            case 9:                cl.set(5, 31);                break;            case 10:                cl.set(5, 30);                break;            case 11:                cl.set(5, 31);        }        date = cl.getTime();        returndate = getFormatTimeString(date, fmt);        return returndate;    }    public static Date getNextMonthFirstDate() {        Calendar calendar = Calendar.getInstance();        calendar.set(Calendar.DAY_OF_MONTH, 1);        calendar.add(Calendar.MONTH, 1);        return calendar.getTime();    }    public static Date getFirstDate() {        Calendar calendar = Calendar.getInstance();        calendar.set(Calendar.DAY_OF_MONTH, 1);        return calendar.getTime();    }    public static String getNextMonthFirstDay(String fmt) {        String returndate = "";        Date date = getNextMonthFirstDate();        returndate = getFormatTimeString(date, fmt);        return returndate;    }    public static boolean compareDate(String fistDate, String secondDate, String format)            throws ParseException {        boolean flag = false;        Date fist = null;        Date second = null;        fist = getDateFromString(fistDate, format);        second = getDateFromString(secondDate, format);        if (fist.before(second)) {            flag = true;        }        return flag;    }    public static boolean isRightDate(String value, String varValue) {        try {            SimpleDateFormat format = new SimpleDateFormat(varValue);            format.setLenient(false);            format.parse(value);        } catch (ParseException e) {            return false;        }        return true;    }    public static int getCurrentMonthDay() {        Calendar a = Calendar.getInstance();        a.set(Calendar.DATE, 1);        a.roll(Calendar.DATE, -1);        int maxDate = a.get(Calendar.DATE);        return maxDate;    }    /**     * 在给定的日期加上或减去指定月份后的日期     *     * @param sourceDate 原始时间     * @param month      要调整的月份,向前为负数,向后为正数     * @return     */    public static Date stepMonth(Date sourceDate, int month) {        Calendar c = Calendar.getInstance();        c.setTime(sourceDate);        c.add(Calendar.MONTH, month);        return c.getTime();    }    public static String dateTimeToDate(String dateTime) {        String dateStr = "";        try {            Date date = getDateFromString(dateTime, DATE_FORMATE_STRING_A);            dateStr = getFormatTimeString(date, DATE_FORMATE_STRING_B);        } catch (ParseException e) {            dateStr = dateTime;        }        return dateStr;    }    public static int getYear() {        Date date = getCurrentDate();        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        return calendar.get(Calendar.YEAR);    }    public static int getMonth() {        Date date = getCurrentDate();        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        return calendar.get(Calendar.MONTH) + 1;    }    /**     * 判断时间是否在时间段内     *     * @param nowTime     * @param beginTime     * @param endTime     * @return     */    public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {        Calendar date = Calendar.getInstance();        date.setTime(nowTime);        Calendar begin = Calendar.getInstance();        begin.setTime(beginTime);        Calendar end = Calendar.getInstance();        end.setTime(endTime);        if (date.after(begin) && date.before(end)) {            return true;        } else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) {            return true;        } else {            return false;        }    }    //获取两个日期之间的天数    public static int daysBetween(Date now, Date returnDate) {        Calendar cNow = Calendar.getInstance();        Calendar cReturnDate = Calendar.getInstance();        cNow.setTime(now);        cReturnDate.setTime(returnDate);        setTimeToMidnight(cNow);        setTimeToMidnight(cReturnDate);        long todayMs = cNow.getTimeInMillis();        long returnMs = cReturnDate.getTimeInMillis();        long intervalMs = todayMs - returnMs;        return millisecondsToDays(intervalMs);    }    //获取两个日期之间的毫秒数    private static void setTimeToMidnight(Calendar calendar) {        calendar.set(Calendar.HOUR_OF_DAY, 0);        calendar.set(Calendar.MINUTE, 0);        calendar.set(Calendar.SECOND, 0);    }    //获取两个日期之间的分钟数    private static int millisecondsToDays(long intervalMs) {        return (int) (intervalMs / (1000 * 86400));    }}