• Java时间日期DateUtil


    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class DateUtil {
    
        private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
        /*
    	获取昨天的日期
    	 */
        public static Date getYesterday(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.DATE,-1);
            Date yesterday = cal.getTime();
            return yesterday;
        }
    
        /*
        获取传入时间的日份
         */
        public static int getDay(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.DATE);
        }
    
        /**
         * 获取传入时间的月份
         */
        public static int getMonth(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.MONTH) + 1;
        }
    
        /**
         * 获取传入时间的季度
         */
        public static int getQuarter(Date date) {
            int month = getMonth(date);
            if (month <= 3)
                return 1;
            else if (month <= 6)
                return 2;
            else if (month <= 9)
                return 3;
            else
                return 4;
        }
    
        /**
         * 获取传入时间的年份
         */
        public static int getYear(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.YEAR);
        }
    
        /**
         * 获取传入时间月份天数
         */
        public static int getCurrentMonthDay(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DATE, 1);
            cal.roll(Calendar.DATE, -1);
            return cal.get(Calendar.DATE);
        }
    
        /**
         * 获得传入时间为是星期几
         */
        public static int getWeekDay(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int weekDay = c.get(Calendar.DAY_OF_WEEK);
            return weekDay - 1;
        }
    
        /*
        获取所在周指定星期几的日期Date
         */
        public static Date getWeekDayDate(Date date, int num) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            switch (num) {
                case 1:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
                    break;
                case 2:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
                    break;
                case 3:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
                    break;
                case 4:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
                    break;
                case 5:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
                    break;
                case 6:
                    c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
                    break;
                case 7:
                    // c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
                    int weekday = c.get(Calendar.DAY_OF_WEEK);
                    c.add(Calendar.DATE, 8 - weekday);
                    break;
            }
            return c.getTime();
        }
    
        /*
        获取传入时间所在周第一天,周一
         */
        public static Date getFirstWeekDay(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            try {
                int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;
                c.add(Calendar.DATE, -weekday);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return c.getTime();
        }
    
        /*
        获取传入时间所在周最后一天,周日
         */
        public static Date getLastWeekDay(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            try {
                int weekday = c.get(Calendar.DAY_OF_WEEK);
                c.add(Calendar.DATE, 8 - weekday);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return c.getTime();
        }
    
        /**
         * 根据日期获取月初第一天
         */
        public static Date getFirstMonthDay(Date date) {
            Calendar cal = Calendar.getInstance();// 获取当前日期
            cal.setTime(date);
            cal.add(Calendar.MONTH, 0);
            cal.set(Calendar.DAY_OF_MONTH, 1);
            return cal.getTime();
        }
    
        /**
         * 根据日期获取月末最后一天
         */
        public static Date getLastMonthDay(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            return cal.getTime();
        }
    
        /*
        根据日期获取所在季度的第一天
         */
        public static Date getFirstQuarterDay(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int currentMonth = cal.get(Calendar.MONTH) + 1;
            try {
                if (currentMonth >= 1 && currentMonth <= 3)
                    cal.set(Calendar.MONTH, 0);
                else if (currentMonth >= 4 && currentMonth <= 6)
                    cal.set(Calendar.MONTH, 3);
                else if (currentMonth >= 7 && currentMonth <= 9)
                    cal.set(Calendar.MONTH, 6);
                else if (currentMonth >= 10 && currentMonth <= 12)
                    cal.set(Calendar.MONTH, 9);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return cal.getTime();
        }
    
        /*
        根据日期获取所在季度的最后一天
         */
        public static Date getLastQuarterDay(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int currentMonth = cal.get(Calendar.MONTH) + 1;
            try {
                if (currentMonth >= 1 && currentMonth <= 3)
                    cal.set(Calendar.MONTH, 2);
                else if (currentMonth >= 4 && currentMonth <= 6)
                    cal.set(Calendar.MONTH, 5);
                else if (currentMonth >= 7 && currentMonth <= 9)
                    cal.set(Calendar.MONTH, 8);
                else if (currentMonth >= 10 && currentMonth <= 12)
                    cal.set(Calendar.MONTH, 11);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return cal.getTime();
        }
    
        /*
        所在年前/后半年开始日期
         */
        public static Date getHalfYearStartTime(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int currentMonth = c.get(Calendar.MONTH) + 1;
            if (currentMonth >= 1 && currentMonth <= 6) {
                c.set(Calendar.MONTH, 0);
            } else if (currentMonth >= 7 && currentMonth <= 12) {
                c.set(Calendar.MONTH, 6);
            }
            c.set(Calendar.DATE, 1);
            return c.getTime();
        }
    
        /**
         所在年前/后半年的结束时间
         */
        public static Date getHalfYearEndTime(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int currentMonth = c.get(Calendar.MONTH) + 1;
            if (currentMonth >= 1 && currentMonth <= 6) {
                c.set(Calendar.MONTH, 5);
                c.set(Calendar.DATE, 30);
            } else if (currentMonth >= 7 && currentMonth <= 12) {
                c.set(Calendar.MONTH, 11);
                c.set(Calendar.DATE, 31);
            }
            return c.getTime();
        }
    
        /**
         * 根据日期获取年第一天
         */
        public static Date getYearFirstDay(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int year=calendar.get(Calendar.YEAR);
            Calendar cd = Calendar.getInstance();
            cd.clear();
            cd.set(Calendar.YEAR, year);
            cd.roll(Calendar.DAY_OF_YEAR,0);
            Date currYearLast = cd.getTime();
            return currYearLast;
        }
    
        /*
    	获取当月指定天数日期
    	 */
        public static Date getDateByDay(Date date, int day) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.set(Calendar.DATE, day);
            return cal.getTime();
        }
    
        /*
    	获取上月指定天数日期
    	 */
        public static Date getLastMonthByDay(Date date, int day) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int month = cal.get(Calendar.MONTH);
            cal.set(Calendar.MONTH, month - 1);
            cal.set(Calendar.DATE, day);
            return cal.getTime();
        }
    
        /**
         * 获取传入时间所在季度总天数
         */
        public static int getCurrentQuarterDay(Date date) {
            Date firstDayDate = getFirstQuarterDay(date);
            Date lastDayDate = getLastQuarterDay(date);
            int day = (int) ((lastDayDate.getTime() - firstDayDate.getTime()) / (24*3600*1000) + 1);
            return day;
        }
    
        /*
        判断日期是否为周日
         */
        public static boolean isWeekEnd(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
                return true;
            } else{
                return false;
            }
        }
    
        /*
        判断日期是否为月末
         */
        public static boolean isMonthEnd(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int getDay = calendar.get(Calendar.DAY_OF_MONTH);
            if(getDay == calendar.getActualMaximum(Calendar.DAY_OF_MONTH)){
                return true;
            }else{
                return false;
            }
        }
    
        /*
        判断日期是否为季末(最后一天)
         */
        public static boolean isQuarterEnd(Date date) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            int currentMonth = c.get(Calendar.MONTH) + 1;
            Date dt = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                if (currentMonth >= 1 && currentMonth <= 3) {
                    c.set(Calendar.MONTH, 2);
                    c.set(Calendar.DATE, 31);
                } else if (currentMonth >= 4 && currentMonth <= 6) {
                    c.set(Calendar.MONTH, 5);
                    c.set(Calendar.DATE, 30);
                } else if (currentMonth >= 7 && currentMonth <= 9) {
                    c.set(Calendar.MONTH, 8);
                    c.set(Calendar.DATE, 30);
                } else if (currentMonth >= 10 && currentMonth <= 12) {
                    c.set(Calendar.MONTH, 11);
                    c.set(Calendar.DATE, 31);
                }
                dt = sdf.parse(sdf.format(c.getTime()));
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (date.compareTo(dt) == 0) {
                return true;
            } else {
                return false;
            }
        }
    
        /*
        据日期获取去年年末
         */
        public static Date getLastYearLastDay(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int year=calendar.get(Calendar.YEAR)-1;
            Calendar cd = Calendar.getInstance();
            cd.clear();
            cd.set(Calendar.YEAR, year);
            cd.roll(Calendar.DAY_OF_YEAR, -1);
            Date currYearLast = cd.getTime();
            return currYearLast;
        }
    
        /**
         * 属于本年第几天
         */
        public static int getYearDayIndex(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);
            calendar.setTime(date);
            return calendar.get(Calendar.DAY_OF_YEAR);
        }
    
        /**
         * 属于本年第几周
         */
        public static int getYearWeekIndex(Date date) {
            Calendar calendar = Calendar.getInstance();
            calendar.setFirstDayOfWeek(Calendar.MONDAY);
            calendar.setTime(date);
            return calendar.get(Calendar.WEEK_OF_YEAR);
        }
    
        /*
        获取两个日期间的天数,直接传入Date
         */
        public static Long getDayByDates(Date startDate, Date endDate) {
            Long day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
            return day;
        }
    
        /*
        获取两个日期间的天数,直接传入StrDate
         */
        public static Long getDayByStrDates(String startStrDate, String endStrDate) throws ParseException {
            Date startDate = sdf.parse(startStrDate);
            Date endDate = sdf.parse(endStrDate);
            Long day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
            return day;
        }
    
        /**
         * 判断是否闰年
         * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
         *            3.能被4整除同时能被100整除则不是闰年
         */
        public static boolean isLeapYear(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            int year = cal.get(Calendar.YEAR);
            if ((year % 400) == 0) {
                return true;
            } else if ((year % 4) == 0) {
                if ((year % 100) == 0) {
                    return false;
                } else {
                    return true;
                }
            } else {
                return false;
            }
        }
    
    
        public static void main(String[] args) throws ParseException {
            Date date = new Date();
            System.out.println("前一天日期为:" + sdf.format(getYesterday(date)));
            System.out.println("该日期的日份:" + getDay(date));
            System.out.println("该日期的月份:" + getMonth(date));
            System.out.println("该日期的季度:" + getQuarter(date));
            System.out.println("该日期的年份:" + getYear(date));
            System.out.println("所在月总天数:" + getCurrentMonthDay(date));
            System.out.println("所在季度总天数:" + getCurrentQuarterDay(date));
            System.out.println("该日期为本周星期:" + getWeekDay(date));
            System.out.println("所在周的星期天的日期:" + sdf.format(getWeekDayDate(date, 7)));
            System.out.println("所在周第一天日期:" + sdf.format(getFirstWeekDay(date)));
            System.out.println("所在周最后一天日期:" + sdf.format(getLastWeekDay(date)));
            System.out.println("所在月第一天日期:" + sdf.format(getFirstMonthDay(date)));
            System.out.println("所在月最后一天日期:" + sdf.format(getLastMonthDay(date)));
            System.out.println("所在季度第一天日期:" + sdf.format(getFirstQuarterDay(date)));
            System.out.println("所在季度最后一天日期:" + sdf.format(getLastQuarterDay(date)));
            System.out.println("所在年前/后半年开始日期:" + sdf.format(getHalfYearStartTime(date)));
            System.out.println("所在年前/后半年结束日期:" + sdf.format(getHalfYearEndTime(date)));
            System.out.println("所在年第一天日期:" + sdf.format(getYearFirstDay(date)));
            System.out.println("所在月指定天数日期:" + sdf.format(getDateByDay(date, 10)));
            System.out.println("上月指定天数日期:" + sdf.format(getLastMonthByDay(date, 10)));
            System.out.println("是否为周日:" + isWeekEnd(date));
            System.out.println("是否为月末:" + isMonthEnd(date));
            System.out.println("是否为季末:" + isQuarterEnd(date));
            System.out.println("去年最后一天日期:" + sdf.format(getLastYearLastDay(date)));
            System.out.println("属于本年第几天:" + getYearDayIndex(date));
            System.out.println("属于本年第几周:" + getYearWeekIndex(date));
            System.out.println("两个日期的间隔天数:" + getDayByDates(sdf.parse("2019-10-28"), date));
            System.out.println("两个日期的间隔天数:" + getDayByStrDates("2019-10-23", "2019-10-30"));
            System.out.println("是否为闰年:" + isLeapYear(date));
        }
    }
    

      测试结果:

    前一天日期为:2019-10-29
    该日期的日份:30
    该日期的月份:10
    该日期的季度:4
    该日期的年份:2019
    所在月总天数:31
    所在季度总天数:92
    该日期为本周星期:3
    所在周的星期天的日期:2019-11-03
    所在周第一天日期:2019-10-28
    所在周最后一天日期:2019-11-03
    所在月第一天日期:2019-10-01
    所在月最后一天日期:2019-10-31
    所在季度第一天日期:2019-10-01
    所在季度最后一天日期:2019-12-31
    所在年前/后半年开始日期:2019-07-01
    所在年前/后半年结束日期:2019-12-31
    所在年第一天日期:2019-01-01
    所在月指定天数日期:2019-10-10
    上月指定天数日期:2019-09-10
    是否为周日:false
    是否为月末:false
    是否为季末:false
    去年最后一天日期:2018-12-31
    属于本年第几天:303
    属于本年第几周:44
    两个日期的间隔天数:2
    两个日期的间隔天数:7
    是否为闰年:false
    

      

  • 相关阅读:
    今日小结
    Delphi 框架Frames的使用
    Delphi窗体显示后弹出一个对话框的方法
    Structs2学习笔记1
    使用 LaravelExcel 进行 CSV/EXCEL 文件读写
    Mysql函数FIND_IN_SET()的使用方法
    Laravel数据库操作的三种方式
    Laravel5.5 支付宝手机网站支付的教程
    Python之路3【知识点】白话Python编码和文件操作
    艾伟_转载:利用jQuery实现的Ajax 验证用户名是否存在 狼人:
  • 原文地址:https://www.cnblogs.com/Big-Boss/p/10536565.html
Copyright © 2020-2023  润新知