Java日期工具类

  1. 前言

    • 获取当月的天数
    • 获取前月的第一天
    • 获取前月的最后一天
    • 返回已添加指定时间间隔的日期(时间间隔(“y”:年;”d”:天;”m”:月)
    • 根据传入的年、月获取月初Date
    • 根据传入的年、月获取月末Date
    • 获取当前年月
    • 获取某年月的天数
    • 获取某年月的最后一天
    • 根据传过来的Str和格式,格式化str到Date
  2. 代码

/**
 * 日期工具类
 */
public class DateUtil {

    /** 
     * 获取当月的天数 
     * */  
    public static int getCurrentMonthDaysCount() {  
        Calendar a = Calendar.getInstance();  
        a.set(Calendar.DATE, 1);  
        a.roll(Calendar.DATE, -1);  
        int maxDate = a.get(Calendar.DATE);  
        return maxDate;  
    }

    /**
     * 
     * @Description 获取前月的第一天
     * @return
     */
    public static Date getCurrentMonthFirstDay(){
        Calendar cale = Calendar.getInstance();  
        cale.add(Calendar.MONTH, 0);  
        cale.set(Calendar.DAY_OF_MONTH, 1);  
        return cale.getTime();
    }

    /**
     * 
     * @Description 获取前月的最后一天 
     * @return
     */
    public static Date getCurrentMonthLastDay(){
        Calendar cale = Calendar.getInstance();  
        cale.add(Calendar.MONTH, 1);  
        cale.set(Calendar.DAY_OF_MONTH, 0); 
        return cale.getTime();
    }

    /**
     * 返回已添加指定时间间隔的日期
     * 
     * @param interval 表示要添加的时间间隔("y":年;"d":天;"m":月;如有必要可以自行增加)
     * @param number  表示要添加的时间间隔的个数
     * @param date java.util.Date() 被操作的日期
     * @param dateFormat 返回的日期格式
     * @return Date 默认为yyyy-MM-dd HH:mm:ss.SSS格式的日期
     */
    public static Date dateAddToDate(String interval, int number,
            java.util.Date date, String dateFormat) {
        if (dateFormat == null || "".equals(dateFormat)) {
            dateFormat = "yyyy-MM-dd HH:mm:ss sss";
        }
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTime(date);
        // 加若干年
        if (interval.equals("y")) {
            int currYear = gc.get(Calendar.YEAR);
            gc.set(Calendar.YEAR, currYear + number);
        }
        // 加若干月
        else if (interval.equals("m")) {
            int currMonth = gc.get(Calendar.MONTH);
            gc.set(Calendar.MONTH, currMonth + number);
        }
        // 加若干天
        else if (interval.equals("d")) {
            int currDay = gc.get(Calendar.DATE);
            gc.set(Calendar.DATE, currDay + number);
        }
        // 加若小时
        else if (interval.equals("h")) {
            int currDay = gc.get(Calendar.HOUR);
            gc.set(Calendar.HOUR, currDay + number);
        }
        // 加若分
        else if (interval.equals("f")) {
            int currDay = gc.get(Calendar.MINUTE);
            gc.set(Calendar.MINUTE, currDay + number);
        }
        return gc.getTime();
    }

   /**
    * 获取月初Date  
    * @param  year
    * @param  month
    * @return Date    返回类型 
    * @throws
     */
    public static Date getMonthStartDay(int year,int month){
        Calendar ca =Calendar.getInstance();
        ca.set(Calendar.YEAR, year);
        ca.set(Calendar.MONTH, month-1);
        ca.set(Calendar.DAY_OF_MONTH,1);
        return ca.getTime();
    }

   /**
    * 获取月末Date  
    * @param  year
    * @param  month
    * @return Date    返回类型 
    * @throws
     */
    public static Date getMonthEndDay(int year,int month){
        Date d=getMonthStartDay(year,month);
        Calendar ca =Calendar.getInstance();
        ca.setTime(d);
        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
        return ca.getTime();
    }

    /**
     * 
     * @Description 获取当前年月
     * @return
     */
    public static String getCurrentYearMonth(){
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH )+1;
        return year + "-" + (month < 10 ? ("0" + month) : month);
    }

    /**
     * 
     * @Description 获取某年月的天数
     * @param yearMonth 年月(如2017-06)
     * @return
     */
    public static int getDayCountByYearMonth(String yearMonth){
        Calendar cal = Calendar.getInstance(); 
        cal.setTime(DateUtil.strToDate(yearMonth + "-01", "yyyy-MM-dd"));
        cal.set(Calendar.DATE, 1);  
        cal.roll(Calendar.DATE, -1);   
        int maxDate = cal.get(Calendar.DATE);
        return maxDate;
    } 

    /**
     * 
     * @Description 获取某年月的最后一天
     * @param yearMonth 年月
     * @return
     */
    public static Date getLastDayByYearMonth(String yearMonth){
        Calendar cale = Calendar.getInstance();  
        cale.setTime(DateUtil.strToDate(yearMonth + "-01", "yyyy-MM-dd"));
        cale.add(Calendar.MONTH, 1);  
        cale.set(Calendar.DAY_OF_MONTH, 0); 
        return cale.getTime();
    }

    /**
     * 根据传过来的Str和格式,格式化str到Date
     * @param str 日期
     * @param formatLayout 转换格式 如:yyyy-MM-dd HH:mm:ss
     * @return Date
     * @throws ParseException
     */
    public static Date strToDate(String str,String formatLayout){
        if (str == null || str.trim().length() < 1)
            return null;
        SimpleDateFormat df = new SimpleDateFormat(formatLayout);
        Date date = null;
        try {
            date = df.parse(str);
        } catch (ParseException e) {
            return null;
        }
        return date;
    }

}

3.日期工具类中的方法还会继续收集汇总……,方便自已,方便他人,量的积累,会产生质的变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值