日期处理类-DateUtils.java

来源:互联网 发布:eval解析json字符串 编辑:程序博客网 时间:2024/05/16 11:57
/* *File:DateUtils.java *@version: 1.0 *Date:2014-03-14 */import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 时间工具类 * * @author Administrator * @since 1.0 */public class DateUtils {    private static final long serialVersionUID = 440525605745656148L;    private static SimpleDateFormat sdf = new SimpleDateFormat();    public static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd";    public static final String PATTERN_YYYY_MM = "yyyy-MM";    public static final String PATTERN_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd hh:mm:ss";    public static final String PATTERN_TIMESTAMP = "yyyyMMddHHmmssSSS";    /**     * 以指定时间格式将Date转String     *     * @param date 日期     * @param pattern 格式     * @return 指定格式的时间字符串     */    public static synchronized String getDateFormat(Date date, String pattern) {        if (date == null) {            return "";        }        synchronized (sdf) {            String str = null;            sdf.applyPattern(pattern);            str = sdf.format(date);            return str;        }    }    /**     * 以并指定时间格式将String转Date     *     * @param strDate     * @param pattern     * @return     */    public static synchronized Date parseDateFormat(String strDate, String pattern) {        synchronized (sdf) {            Date date = null;            sdf.applyPattern(pattern);            try {                date = sdf.parse(strDate);            } catch (Exception e) {                e.printStackTrace();            }            return date;        }    }    /**     * 判断两个时间是否相等     *     * @param date1     * @param date2     * @return     */    public static boolean equalsDate(Date date1, Date date2) {        boolean result = false;        if ((date1 != null) && (date2 != null) && (date1.equals(date2))) {            result = true;        }        return result;    }    /**     * 判断开始时间是否大于结束时间     *     * @param startDate 开始时间     * @param enDate 结束时间     * @return startDate>enDate时返回true     */    public static boolean afterDate(Date startDate, Date enDate) {        boolean result = false;        if ((startDate != null) && (enDate != null)                && (startDate.after(enDate))) {            result = true;        }        if (result) {            System.err.println("开始日期大于结束日期!");        }        return result;    }    /**     * 判断开始日期是否小于结束日期     *     * @param startDate 开始日期     * @param enDate 结束日期     * @return startDate<enDate时返回true     */    public static boolean beforeDate(Date startDate, Date enDate) {        boolean result = false;        if ((startDate != null) && (enDate != null)) {            if (startDate.before(enDate)) {                result = true;                return result;            }            System.err.println("开始日期小于结束日期!");            return result;        }        return (startDate != null) || (enDate != null);    }    /**     * 以指定格式比较两个时间大小     *     * @param start 开始时间     * @param end 结束时间     * @param pattern 时间格式     * @return 0:start=end,1:start>end,-1:start<end     * @throws ParseException     */    public static int compareDateWithoutTime(Date start, Date end, String pattern)            throws ParseException {        SimpleDateFormat fmt = new SimpleDateFormat(pattern);        String startDateStr = fmt.format(start);        String endDateStr = fmt.format(end);        Date startDate = fmt.parse(startDateStr);        Date endDate = fmt.parse(endDateStr);        return startDate.compareTo(endDate);    }    /**     * 获取指定日期的指定下一个日期 <br>例如传参为【20130827 13:59:00 213, -2】得出的结果为【20130825     * 13:59:00 213】     *     * @param date 传参时间     * @param index 下一个时间(天)     * @return 计算得出的时间     */    public static Date getNextDate(Date date, int index) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(5, index);        return calendar.getTime();    }    /**     * 获取指定年度、指定月份的最大日期或者最小日期 <br>例如传参为【2013,8, 0】得出的结果为【2013-08-31】     * <br>例如传参为【2013,8, 1】得出的结果为【2013-08-1】     *     * @param year 指定年     * @param month 指定月份     * @param type (1)开始日期还是(0)结束日期     * @return 计算得出的时间     */    public static Date getMonthLastDay(int year, int month, int type) {        Calendar calendar = Calendar.getInstance();        if (type == 1) {            if (month == 1) {                year -= 1;                month = 12;            } else {                month -= 1;            }        }        calendar.set(year, month, 1);        calendar.set(5, type);        Date date = new Date(calendar.getTimeInMillis());        SimpleDateFormat format = new SimpleDateFormat(PATTERN_YYYY_MM_DD);        String newTime = format.format(date);        try {            return new SimpleDateFormat(PATTERN_YYYY_MM_DD).parse(newTime);        } catch (ParseException ex) {            ex.printStackTrace();        }        return null;    }    /**     * 获取毫秒级时间戳 17位     *     * @param date 时间     * @return 时间戳     */    public static String getTimeStamp(Date date) {        if (null == date) {            return "";        }        String timeStampString = getDateFormat(date, PATTERN_TIMESTAMP);        return timeStampString;    }    /**     * 将时间戳转化为时间对象     *     * @param timeStamp 时间戳字符串     * @return 时间date     */    public static Date getDateByString(String timeStamp) {        if (timeStamp == null || "".equals(timeStamp)) {            return new Date();        }        DateFormat df = new SimpleDateFormat(PATTERN_TIMESTAMP);        Date date;        try {            date = df.parse(timeStamp);        } catch (ParseException ex) {            date = new Date();        }        return date;    }}

0 0
原创粉丝点击