工具类-日期工具类

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"));
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值