java date 比较两个日期的大小 日期转换工具类

总结了一下日期转换常用的几种,看源码:

private static final Logger logger = Logger.getLogger(DateUtil.class);
    /**
     * 日期转换成字符串格式
     * @param date
     * @param pattern
     * @return
     */
    public String dateToString(Date date, String pattern){
        SimpleDateFormat sf = new SimpleDateFormat(pattern);
        return sf.format(date);
    }
   
    /**
     * 字符串格式转换成日期格式
     * @param dateString
     * @param pattern
     * @return
     */
    public Date stringToDate(String dateString, String pattern){
        SimpleDateFormat sf = new SimpleDateFormat(pattern);
        Date date = null;
        try {
            date = sf.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
   
    /**
     * 获得两个日期之间的所有日期
     * @param startDate
     * @param endDate
     * @return
     */
    public static List<String> getDateStringListByBetweenTwoDates(String beginDate,String endDate){
        List<String> dateList = new ArrayList<String>();
        int maxRound = 366;//hardcode
        int round = 0;
        String nextDate = beginDate;
        dateList.add(nextDate);
        while ((nextDate != null && !nextDate.equals(endDate)) && round++ < maxRound){
            nextDate = DateStringAdd(nextDate, 1);
            dateList.add(nextDate);
        }
        return dateList;
    }
   
    /**
     * 获得日期的上个或下个日期
     * @param dateString
     * @param add
     * @return
     */
    public static String DateStringAdd(String dateString, int add){
        String sret = "";
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        if (dateString == null)
            return null;
        if (add == 0)
            return dateString;
        if (!dateString.startsWith("1") && !dateString.startsWith("2"))
            return null;
        if(add <0)
            return null;
        try {
            Date date = sf.parse(dateString);
            int year = date.getYear()+1900;
            int month = date.getMonth()+1;
            int day = date.getDate();
            switch(month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    if(day+add>31){
                        month++;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 12:
                    if(month==12 && day+add>31){
                        year++;
                        month=1;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    if(day+add>30){
                        month++;
                        day=1;
                    }else{
                        day=day+add;
                    }
                    break;
                case 2:
                    if(year%400==0||(year%4==0 && year%100!=0)){
                        if(day+add>29){
                            month++;
                            day=1;
                        }else{
                            day=day+add;
                        }
                    }else{
                        if(day+add>28){
                            month++;
                            day=1;
                        }else{
                            day=day+add;
                        }
                    }
                    break;
            }
            if(month<10){
                sret = year+"-0"+month;
            }else{
                sret = year+"-"+month;
            }
            if(day<10){
                sret = sret+"-0"+day;
            }else{
                sret = sret+"-"+day;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
       
        return sret;
    }
   
    /**
     * 日期字符串转换成Timestamp类型
     * @param dateString
     * @return
     */
    public static Timestamp dateStringConvertToTimestamp(String dateString, String pattern){
        dateString = dateString.replaceAll("&nbsp;", " ");
        SimpleDateFormat sf = new SimpleDateFormat(pattern);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timestampString = null;
        try {
            Date date = sf.parse(dateString);
            timestampString = sdf.format(date);
        } catch (ParseException e) {
            logger.info("格式转换错误...");
            e.printStackTrace();
        }
        Timestamp timestamp = Timestamp.valueOf(timestampString);
        return timestamp;
    }
    //当前时间加间小时分钟
    public static String currentTimeAddMinute(Integer minute){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm");
//        Date now = new Date();
        Calendar ca = Calendar.getInstance();
        //加小时
        ca.add(Calendar.HOUR_OF_DAY, minute);
//        ca.add(Calendar.DAY_OF_YEAR, minute);
        //加分钟
//        ca.add(Calendar.MINUTE, minute);
        System.out.println("当前时间加5分钟的时间:"+sdf.format(ca.getTime()));
        return sdf.format(ca.getTime());
    }
    //比较两个时间的大小
    public boolean compareDate(String beginDate,String endDate) throws ParseException{
        beginDate="2015-03-21 12:23:20";
        endDate="2015-03-21 12:23:20";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date nowBegin =sdf.parse(beginDate);
        Date nowEnd=sdf.parse(endDate);
        if(nowBegin.getTime()<nowEnd.getTime()){
            return true;
        }else{
            return false;
        }
    }

你可能感兴趣的:(java date 比较两个日期的大小 日期转换工具类)