工具类-日期工具类

来源:互联网 发布:泰国国王科技大学知乎 编辑:程序博客网 时间:2024/05/18 07:02

JAVA日期处理工具类

public class DateHelper {//  private  Calendar calendar = Calendar.getInstance();    // 每天的毫秒数: 86400000    private final static int dayMilliseconds = 86400000;    /**     * 得到日期的年     *     * @param date     * @return Long     */     public static Long getYearFromDate(Date date) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int year = calendar.get(Calendar.YEAR);        return Long.valueOf(year);     }    /**     * 得到日期的月     *     * @param date     * @return Long     */    public static Long getMonthFromDate(Date date) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int month = calendar.get(Calendar.MONTH) + 1;        return Long.valueOf(month);    }    /**     * 得到日期的日     *     * @param date     * @return Long     */    public static Long getDayFromDate(Date date) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int day = calendar.get(Calendar.DATE);        return Long.valueOf(day);    }    /**     * 从年和月得到日期     *     * @param year     * @param month     * @return Date     * @throws ParseException      */    static public Date getDateFromYearMonth(Long year, Long month) throws ParseException {        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");        String dateStr = month.toString();        if (month.longValue() < 10)            dateStr = "0" + dateStr;        dateStr = year.toString() + "-" + dateStr + "-01";        Date date = dateFormat.parse(dateStr);        return date;    }    /**     * 从年月日得到日期     *     * @param year     * @param month     * @return Date     * @throws ParseException      */    static public Date getDateFromYearMonthDay(Long year, Long month, Long day) throws ParseException {        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");        String dateStr = month.toString();        String dayStr = day.toString();        if (month.longValue() < 10)            dateStr = "0" + dateStr;        if (day.longValue() < 10)            dayStr = "0" + dayStr;        dateStr = year.toString() + "-" + dateStr + "-" + dayStr;        Date date = dateFormat.parse(dateStr);        return date;    }    /**     * 得到两个日期间的天数     *     * @param firstDate     * @param lastDate     * @return int     */    static public int getDaysOfDates(Date firstDate, Date lastDate) {        return (int) ((lastDate.getTime() - firstDate.getTime()) / dayMilliseconds);    }    /**     * 日期加指定月数     *     * @param date     * @param months     * @return Date     */    static public Date addMonths(Date date, int months) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.MONTH, months);        return calendar.getTime();    }    /**     * 日期加指定天数     *     * @param date     * @param hour     * @return Date     */    static public Date addHour(Date date, int hour) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.HOUR, hour);        return calendar.getTime();    }    /**     * 日期加指定天数     *     * @param date     * @param days     * @return Date     */    static public Date addDays(Date date, int days) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.add(Calendar.DATE, days);        return calendar.getTime();    }    /**     * 得到时间间的花费时间     *     * @param startDate     * @param endDate     * @return String     */    static public String calculateTimesStringOfDatesBetween(Date startDate,            Date endDate) {        long costTime = (endDate.getTime() - startDate.getTime()) / 1000;        String costTimeStr = null;        if (costTime < 60)            costTimeStr = costTime + "秒";        else if (costTime < 3600)            costTimeStr = (costTime / 60) + "分" + costTime % 60 + "秒";        else            costTimeStr = (costTime / 3600)                    + "小时"                    + ((costTime - (costTime / 3600) * 3600) / 60)                    + "分" + costTime % 60 + "秒";        return costTimeStr;    }    /**     * 得到时间间的花费时间     *     * @param startDate     * @param endDate     * @return String     */    static public String getTimesLongOfDatesBetween(Date startDate,            Date endDate) {        long costTime = (endDate.getTime() - startDate.getTime()) / 1000;        String costTimeStr = null;        if (costTime < 60)            costTimeStr = costTime + "秒";        else if (costTime < 3600)            costTimeStr = (costTime / 60) + "分" + costTime % 60 + "秒";        else            costTimeStr = (costTime / 3600)                    + "小时"                    + ((costTime - (costTime / 3600) * 3600) / 60)                    + "分" + costTime % 60 + "秒";        return costTimeStr;    }    /**     * 格式化日期:yyyy-MM-dd     *     * @param date     * @return String     */    static public String formatDate(Date date) {        if(null!=date)        {            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");            return dateFormat.format(date);        }else{            return "";        }    }    /**     * 格式化日期:yyyy-MM-dd hh:mm:ss     *     * @param date     * @return String     */    static public String formatDateTime(Date date) {        if(null!=date)        {            SimpleDateFormat dateFormat = new SimpleDateFormat(            "yyyy-MM-dd HH:mm:ss");            return dateFormat.format(date);        }else{            return "";        }    }    /**  字符串转换到时间格式        * @param dateStr 需要转换的字符串        * @param formatStr 需要格式的目标字符串  举例 yyyy-MM-dd         * @return Date 返回转换后的时间          * @throws ParseException 转换异常        */        public static Date StringToDate(String dateStr,String formatStr) throws ParseException{             DateFormat sdf=new SimpleDateFormat(formatStr);             Date date=null;             date = sdf.parse(dateStr);              return date;        }    /**     * 字符串转换到时间格式        * @param dateStr     * @return     * @throws ParseException      */    public static Date String2Date(String dateStr) throws ParseException{               DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");                Date date=null;             if(StringUtils.isNotBlank(dateStr)){            date = sdf.parse(dateStr);        }                   return date;        }    /**     * 按日期格式定义格式化日期     *     * @param date     * @param format     * @return String     */    static public String formatDateTime(Date date, String format) {        SimpleDateFormat dateFormat = new SimpleDateFormat(format);        return dateFormat.format(date);    }    /**     * 从日期格式串返回日期     *     * @param dateStr     *            日期格式串     * @param format     *            日期格式定义     * @return     * @throws ParseException      */    static public Date getDateFromString(String dateStr, String format) throws ParseException {        SimpleDateFormat dateFormat = new SimpleDateFormat(format);        if(dateStr.trim().equals("")){            return null;        }else{            return dateFormat.parse(dateStr);        }    }    /**     * 生成用于文件名称的日期字符串     *     * @param date     * @return     */    static public String formatDateTimeForFileName(Date date) {        SimpleDateFormat dateFormat = new SimpleDateFormat(                "yyyy-MM-dd-HH-mm-ss");        return dateFormat.format(date);    }    /**     * 返回时间段,暂定为20--20     *     * @param date     * @return Date[] size=2,begin and end date     * @throws ParseException      */    static public Date[] getScopeDate(Date date) throws ParseException {        Date[] row = new Date[2];        Long y = getYearFromDate(date);        Long m = getMonthFromDate(date);        Date date1 = getDateFromYearMonthDay(y, Long.valueOf(m.longValue() - 1), Long.valueOf(20));        Date date2 = getDateFromYearMonthDay(y, m, Long.valueOf(20));        row[0] = date1;        row[1] = date2;        return row;    }    static public String getTime(String formet){         SimpleDateFormat   formatter   =   new   SimpleDateFormat   (formet);         Date   curDate   =   new   Date(System.currentTimeMillis());//获取当前时间        String   str   =   formatter.format(curDate);        //System.out.println(str);        return str;    };    static public String getYesterdayTime(String formet){        SimpleDateFormat   formatter   =   new   SimpleDateFormat   (formet);        Date   curDate   =   new   Date(System.currentTimeMillis());//获取当前时间        Calendar cal = Calendar.getInstance();        cal.setTime(curDate);        cal.add(Calendar.DATE, -1);        Date yesterday =cal.getTime();//昨天        String   str   =   formatter.format(yesterday);        return str;    };    //日期格式验证     public static boolean isDate(String str)    {        //严格验证时间格式的(匹配[2002-01-31], [1997-04-30], [2004-01-01])不匹配([2002-01-32], [2003-02-29], [04-01-01])        //String regex = "^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$";        //没加时间验证的YYYY-MM-DD        String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";        //加了时间验证的YYYY-MM-DD 00:00:00        //  String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$";        Pattern pattern = Pattern.compile(regex);        Matcher matcher = pattern.matcher(str);        return matcher.matches();    }     //计算两个日期之间相差几天     public static int dayCount(String startTime, String endTime) throws ParseException{         //按照传入的格式生成一个simpledateformate对象         SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");         long nd = 1000*24*60*60;//一天的毫秒数         long diff;         long day = 0;             //获得两个时间的毫秒时间差异         diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();         day = diff/nd;//计算差多少天         return (int)day;     }    //判断时间date1是否在时间date2之前     //时间格式 2005-4-21 16:16    public static boolean isDateBefore(String date1,String date2) throws ParseException{         DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");        Boolean bn=false;        Date d1=df.parse(date1);        Date d2=df.parse(date2);        if(d1.getTime()<d2.getTime()){            bn= true;         }        else if(d1.getTime()>d2.getTime()){            bn= false;        }        return bn;     }     public static void main(String[] args) throws ParseException {//      System.out.println("formatDate:"+formatDate(new Date()));//      System.out.println(DateUtil.parseDate(formatDate(new Date())));//      System.out.println("formatDate:"+formatDate(DateUtil.parseDate(formatDate(new Date()))));//      System.out.println(DateHelper.isDate("1902-05-04 12:12:12"));////      System.out.println(DateHelper.getMonthFromDate(DateHelper.getDateFromString("2012-01", "yyyy-MM")));//      System.out.println(DateHelper.conutDay("2009-01-01", "2009-05-03"));//      System.out.println(DateHelper.dayCount("2010-7-3", "2010-8-23"));//      getDateFromString("2012-4-12 12:25", "yyyy-mm-dd HH:mm");//      System.out.println(getDateFromString("2012-4-12 12:25", "yyyy-mm-dd HH:mm"));//      if(isDateBefore("2012-4-10 12:25","2013-4-10 12:25"))//      {//          System.out.println("!!!!!!!!!!!!!!!");//      }else{//          System.out.println("@@@@@@@@@@@@@@@@@@");//      }//      System.out.println(formatDateTimeForFileName(new Date()));//      System.out.println(addHour(new Date(), 13));        System.out.println("!!!!"+String2Date("2009-1-1 11:00"));    }}
原创粉丝点击