Java Date验证以及计算方法

来源:互联网 发布:淘宝二手雷蛇那么多 编辑:程序博客网 时间:2024/06/04 18:32
/**
     * 得到本月第一天的日期
     * @Methods Name getFirstDayOfMonth
     * @return Date
     */  
    public static Date getFirstDayOfMonth(Date date)   {     
        Calendar cDay = Calendar.getInstance();     
        cDay.setTime(date);  
        cDay.set(Calendar.DAY_OF_MONTH, 1);  
        System.out.println(cDay.getTime());  
        return cDay.getTime();     
    }     
    /**
     * 得到本月最后一天的日期
     * @Methods Name getLastDayOfMonth
     * @return Date
     */  
    public static Date getLastDayOfMonth(Date date)   {     
        Calendar cDay = Calendar.getInstance();     
        cDay.setTime(date);  
        cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));  
        System.out.println(cDay.getTime());  
        return cDay.getTime();     
    }
    
    /**
     * 获取增加几个月的时间
     *
     * @param date
     * @return
     */
    public static Date getDateBeforeMonth(Date date, int month) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.MONTH, +month);
        return dateTime.getTime();
    }

    /**
     * @desc:获取减少m个月的时间
     * @author Clyde
     * @date:2014-3-4
     * @param date
     * @param m
     * @return
     */
    public static Date getDateAfterMonth(Date date, int m) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.MONTH, -m);
        return dateTime.getTime();
    }

    /**
     * 获取增加几天的时间
     *
     * @param date
     * @param day
     * @return
     */
    public static Date getDateBeforeDay(Date date, int day) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.DATE, +day);
        return dateTime.getTime();
    }

    /**
     * @desc:获取减少day天的时间
     * @author Clyde
     * @date:2014-3-4
     * @param date
     * @param day
     * @return
     */
    public static Date getDateAfterDay(Date date, int day) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.DATE, -day);
        return dateTime.getTime();
    }

    /**
     * 获取增加几小时的时间
     *
     * @param date
     * @param hour
     * @return
     */
    public static Date getDateAfterHour(Date date, int hour) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.HOUR, +hour);
        return dateTime.getTime();
    }

    /**
     * 获取增加几分钟的时间
     */
    public static Date getDateAfterMinute(Date date, int minute) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.MINUTE, +minute);
        return dateTime.getTime();
    }

    /**
     * 获取增加几秒的时间
     */
    public static Date getDateAfterSeconds(Date date, int second) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.SECOND, +second);
        return dateTime.getTime();
    }

    /**
     * 获取减少几秒的时间
     */
    public static Date getDateBeforeSeconds(Date date, int second) {
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.SECOND, -second);
        return dateTime.getTime();
    }

    /**
     * 获取上个月的最后一天
     * @param date
     * @return
     */
    public static Date getEndDayOfUpMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 0);
        return calendar.getTime();
    }
    
    /**
     * 获取本月的第一天
     * @param date
     * @return
     */
    public static Date getDatefirstDay(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH,1);
        return calendar.getTime();
    }
    
    /**
     * 获取上一个月的第一天
     * @param date
     * @return
     */
    public static Date getFirstDayOfUpMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.getTime();
    }
    
    /**
     * @desc:计算相差多少天
     * @author Clyde
     * @date:2014-3-4
     * @param date1
     * @param date2
     * @return
     */
    public static int daysDiffer(Date date1, Date date2) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date1);
        int day1 = calendar.get(Calendar.DAY_OF_YEAR);
        calendar.setTime(date2);
        int day2 = calendar.get(Calendar.DAY_OF_YEAR);
        return day2 - day1;
    }

    /**
     * @desc:计算相差多少天
     * @author Clyde
     * @date:2014-3-4
     * @param date1
     * @param date2
     * @return
     */
    public static int getIntervalDays(Date date1, Date date2) {
        if (null == date1 || null == date2) {
            return -1;
        }
        long intervalMilli = date2.getTime() - date1.getTime();
        return (int) (intervalMilli / (24 * 60 * 60 * 1000));
    }

    /**
     * @desc:计算相差的long值
     * @author Clyde
     * @param date1
     * @param date2
     * @return
     */
    public static long getIntervalTimes(Date date1, Date date2) {
        if (null == date1 || null == date2) {
            return -1;
        }
        return date2.getTime() - date1.getTime();
    }

    /**
     * 计算相差的hour值
     * @time 2014-12-23上午11:04:12
     * @param date1
     * @param date2
     * @return
     */
    public static double getIntervalHours(Date date1, Date date2){
        return getIntervalTimes(date1, date2)/(3600.0 * 1000);
    }
    
    /**
     * 设置日期的时间
     *
     * @param date
     * @param hour
     * @param minute
     * @param second
     * @return
     */
    public static Date setDateTime(Date date, int hour, int minute, int second) {
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
                "yyyy-MM-dd");
        try {
            date = sdf.parse(sdf.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.set(Calendar.HOUR, hour);
        dateTime.set(Calendar.MINUTE, minute);
        dateTime.set(Calendar.SECOND, second);
        return dateTime.getTime();
    }

    /**
     * 把分钟格式化为时间格式(HH:mm)
     * @time 2014-12-19上午9:51:44
     * @param minute
     * @return
     */
    public static String getTimeFromMinute(int minute){
        return getTimeFromMinute(minute, "HH:mm");
    }
    
    public static String getTimeFromMinute(int minute,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date=setDateTime(new Date(), 0, 0, 0);
        Calendar dateTime = Calendar.getInstance();
        dateTime.setTime(date);
        dateTime.add(Calendar.MINUTE, minute);
        return sdf.format(dateTime.getTime());
    }
    
    /**
     * 根据分钟获取完整时间显示
     * @param minute
     * @return
     */
    public static String getDetailTimeByDate(Integer minute){
        StringBuffer timeString=new StringBuffer();
        if (minute==null) {
            return "";
        }
        if (minute >= 60*24) {
            //大于一天
            int day=minute/(24*60);
            int nextMin=minute-day*(24*60);
            int hour=nextMin/60;
            int min=nextMin-hour*60;
            timeString.append(day+"天");
            if (hour!=0||min!=0) {
                timeString.append(hour+"小时");
            }
            if (min!=0){
                timeString.append(min+"分钟");
            }
        }else if(minute >= 60){
            //大于一小时
            int hour=minute/60;
            int min=minute-hour*60;
            timeString.append(hour+"小时");
            if (min!=0) {
                timeString.append(min+"分钟");
            }
        }else{
            //一小时内
            timeString.append(minute+"分钟");
        }
        return timeString.toString();
    }
    
    /**
     * 格式化時間 yyyy-MM-dd HH:mm:ss
     *
     * @param date
     * @return
     */
    public static String formatDateToString(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = "";
        if (date != null) {
            dateStr = format.format(date);
        }
        return dateStr;
    }

    /**
     * @desc:格式化time
     * @author Clyde
     * @date:2014-5-13
     * @param date
     * @return
     */
    public static String formatTimeToString(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
        String dateStr = "";
        if (date != null) {
            dateStr = format.format(date);
        }
        return dateStr;
    }

    /**
     * @desc:格式化日期
     * @author Clyde
     * @date:2014-2-23
     * @param date
     * @param format
     * @return
     */
    public static String formatDate(Date date, String format) {
        String customDate = "";
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            customDate = sdf.format(date);
        }
        return customDate;
    }

    /**
     * @desc:返回简化的时间
     * @author Clyde
     * @date:2014-3-16
     * @param date
     * @return
     */
    public static String formatDateToSimple(Date date) {
        String customDate = "";
        if (date == null) {
            return "";
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        customDate = sdf.format(date);
        return customDate;
    }

    /**
     * @desc:String转date
     * @author Clyde
     * @date:2014-3-16
     * @param strDate
     * @param format
     * @return 若失败则返回当前时间
     */
    public static Date parseToDate(String strDate, String format) {
        try {
            if (strDate == null || strDate.trim().length() == 0) {
                return new Date();
            }
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.parse(strDate);
        } catch (ParseException e) {
            logger.error("[ERROR:时间转换失败;]", e);
            return new Date();
        }
    }
    
    public static Date parseToDate(String strDate) {
        return parseToDate(strDate, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取date的日期和time的时间 组成的新的日期对象
     *
     * @param date
     * @param time
     * @return
     */
    public static Date getDateAddTime(Date date, Date time) {
        String d1 = formatDate(date, "yyyy/MM/dd");
        String d2 = formatDate(time, "HH:mm:ss");
        Date allDate = parseToDate(d1 + " " + d2, "yyyy/MM/dd HH:mm:ss");
        return allDate;
    }

    /**
     * 初始化日期组件
     *
     * @param dateBox
     * @param timeBox
     */
    public static void initDate(final Datebox dateBox, final Timebox timeBox,
            final String time) {
        try {
            final Date dateTime = format.parse("0000-00-00 " + time);
            dateBox.addEventListener(Events.ON_BLUR,
                    new EventListener<Event>() {
                        public void onEvent(Event event) throws Exception {
                            Date date = dateBox.getValue();
                            if (date != null) {
                                Date time = null;
                                if (timeBox != null) {
                                    time = timeBox.getValue();
                                }
                                if (time == null) {
                                    date.setHours(dateTime.getHours());
                                    date.setMinutes(dateTime.getMinutes());
                                    date.setSeconds(dateTime.getSeconds());
                                } else {
                                    date.setHours(time.getHours());
                                    date.setMinutes(time.getMinutes());
                                    date.setSeconds(time.getSeconds());
                                }
                                if (timeBox != null) {
                                    timeBox.setValue(date);
                                }
                            }
                            // else {
                            // if (timeBox != null) {
                            // timeBox.setValue(null);
                            // }
                            // }
                        };
                    });
            if (timeBox != null) {
                timeBox.addEventListener(Events.ON_BLUR,
                        new EventListener<Event>() {
                            @Override
                            public void onEvent(Event event) throws Exception {
                                Events.sendEvent(Events.ON_BLUR, dateBox, null);
                            }
                        });
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 初始化时间段选择
     *
     * @param event
     */
    public static void initLimitGroupDay(final Datebox startDate,
            final Timebox startTime, final Datebox endDate,
            final Timebox endTime, Radiogroup group, final boolean isContainTime) {
        Iterable iterable = group.queryAll("radio");
        Iterator<Radio> iterator = iterable.iterator();
        while (iterator.hasNext()) {
            final Radio radio = iterator.next();
            radio.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
                @Override
                public void onEvent(Event event) throws Exception {
                    radio.setChecked(true);
                    if (radio.getValue().equals("null")) {
                        changeSearchDate(startDate, startTime, endDate,
                                endTime, 1, isContainTime, true);
                    } else if (radio.getValue().equals("6month")) {
                        changeSearchDate(startDate, startTime, endDate,
                                endTime, 6, isContainTime, true);
                    } else if (radio.getValue().equals("12month")) {
                        changeSearchDate(startDate, startTime, endDate,
                                endTime, 12, isContainTime, true);
                    } else {
                        changeSearchDate(startDate, startTime, endDate,
                                endTime, new Integer(radio.getValue()
                                        .toString()).intValue(), isContainTime,
                                false);
                    }
                }
            });
        }
    }

    /**
     * 给日期选择组设置值
     *
     * @param days
     */
    public static void changeSearchDate(Datebox startDate, Timebox startTime,
            Datebox endDate, Timebox endTime, int days, boolean isContainTime,
            boolean isMonth) {
        Date end = endDate.getValue();
        if (end == null) {
            end = new Date();
            endDate.setValue(end);
        }
        if (isContainTime) {
            Date endtime = endTime.getValue();
            if (endtime != null) {
                end.setHours(endtime.getHours());
                end.setMinutes(endtime.getMinutes());
                end.setSeconds(endtime.getSeconds());
            } else {
                end.setHours(23);
                end.setMinutes(59);
                end.setSeconds(59);
                endTime.setValue(end);
            }
            Date start = null;
            if (!isMonth) {
                start = DateUtils.getDateAfterDay(end, days);
            } else {
                start = DateUtils.getDateAfterMonth(end, days);
            }
            start = DateUtils.getDateAfterSeconds(start, 1);
            startDate.setValue(start);
            startTime.setValue(start);
        } else {
            Date start = null;
            if (!isMonth) {
                start = DateUtils.getDateAfterDay(end, days);
            } else {
                start = DateUtils.getDateAfterMonth(end, days);
            }
            startDate.setValue(start);
        }
    }

    static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 初始化日期和时间组件
     *
     * @param startDate
     * @param startTime
     * @param endDate
     * @param endTime
     * @param days
     * @param isContainTime
     */
    public static void initDateBoxAndTimeBox(Datebox startDateBox,
            Timebox startTimeBox, Datebox endDateBox, Timebox endTimeBox,
            int days, boolean isContainTime, String startTime, String endTime) {
        try {
            Date endTimeFormat = format.parse("0000-00-00 " + endTime);
            Date endDate = new Date();
            if (!isContainTime) {
                endDate.setHours(endTimeFormat.getHours());
                endDate.setMinutes(endTimeFormat.getMinutes());
                endDate.setSeconds(endTimeFormat.getSeconds());
                endDateBox.setValue(endDate);
                Date startDate = DateUtils.getDateAfterDay(endDate, days);
                startDateBox.setValue(startDate);
            } else {
                endDate.setHours(endTimeFormat.getHours());
                endDate.setMinutes(endTimeFormat.getMinutes());
                endDate.setSeconds(endTimeFormat.getSeconds());
                endDateBox.setValue(endDate);
                endTimeBox.setValue(endDate);
                Date startDate = DateUtils.getDateAfterDay(endDate, days);
                startDate = DateUtils.getDateAfterSeconds(startDate, 1);
                startDateBox.setValue(startDate);
                startTimeBox.setValue(startDate);
            }
            DateUtils.initDate(startDateBox, startTimeBox, startTime);
            DateUtils.initDate(endDateBox, endTimeBox, endTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 初始化日期和时间组件
     */
    public static void initDateBoxAndTimeBoxDefault(
            DateBoxAndTimeBoxInit initDateBoxAndTimeBox) {
        try {
            if (initDateBoxAndTimeBox.getEndDefaultTime() != null) {
                Date endTimeFormat = format.parse("0000-00-00 "
                        + initDateBoxAndTimeBox.getEndDefaultTime());
                Date startTimeFormat = format.parse("0000-00-00 "
                        + initDateBoxAndTimeBox.getStartDefaultTime());
                Date curDate = new Date();
                if (!initDateBoxAndTimeBox.isContainTime()) {
                    Date endDate = new Date(curDate.getTime());
                    endDate.setHours(endTimeFormat.getHours());
                    endDate.setMinutes(endTimeFormat.getMinutes());
                    endDate.setSeconds(endTimeFormat.getSeconds());
                    initDateBoxAndTimeBox.getEndDateBox().setValue(
                            DateUtils.getDateAfterDay(endDate,
                                    initDateBoxAndTimeBox.getBeforeEndDays()
                                            .intValue()));
                    Date startDate = new Date(curDate.getTime());
                    startDate.setHours(startTimeFormat.getHours());
                    startDate.setMinutes(startTimeFormat.getMinutes());
                    startDate.setSeconds(startTimeFormat.getSeconds());
                    initDateBoxAndTimeBox.getStartDateBox().setValue(
                            DateUtils.getDateAfterDay(startDate,
                                    initDateBoxAndTimeBox.getBeforeStartDays()
                                            .intValue()));
                } else {
                    Date endDate = new Date(curDate.getTime());
                    endDate.setHours(endTimeFormat.getHours());
                    endDate.setMinutes(endTimeFormat.getMinutes());
                    endDate.setSeconds(endTimeFormat.getSeconds());
                    endDate = DateUtils
                            .getDateAfterDay(endDate, initDateBoxAndTimeBox
                                    .getBeforeEndDays().intValue());
                    initDateBoxAndTimeBox.getEndDateBox().setValue(endDate);
                    initDateBoxAndTimeBox.getEndTimeBox().setValue(endDate);
                    Date startDate = new Date(curDate.getTime());
                    startDate.setHours(startTimeFormat.getHours());
                    startDate.setMinutes(startTimeFormat.getMinutes());
                    startDate.setSeconds(startTimeFormat.getSeconds());
                    startDate = DateUtils.getDateAfterDay(endDate,
                            initDateBoxAndTimeBox.getBeforeStartDays()
                                    .intValue());
                    startDate = DateUtils.getDateAfterSeconds(startDate, 1);
                    initDateBoxAndTimeBox.getStartDateBox().setValue(startDate);
                    initDateBoxAndTimeBox.getStartTimeBox().setValue(startDate);
                }
            }
            DateUtils.initDate(initDateBoxAndTimeBox.getStartDateBox(),
                    initDateBoxAndTimeBox.getStartTimeBox(),
                    initDateBoxAndTimeBox.getStartDefaultTime());
            DateUtils.initDate(initDateBoxAndTimeBox.getEndDateBox(),
                    initDateBoxAndTimeBox.getEndTimeBox(),
                    initDateBoxAndTimeBox.getEndDefaultTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    /**
     * 判断两个时间差是否超过一个月
     *
     * @param start
     * @param end
     * @return
     */
    public static boolean isContainOneMonth(Date start, Date end,
            boolean isContainTime) {
        if (isContainTime) {
            return DateUtils.getDateAfterSeconds(start, -1).getTime() < DateUtils
                    .getDateBeforeMonth(end, -1).getTime();
        } else {
            return start.getTime() < DateUtils.getDateBeforeMonth(end, -1)
                    .getTime();
        }
    }

    /**
     * 获取日期
     *
     * @param date
     * @param time
     * @return
     */
    public static Date getDateFromDateBox(Datebox date, Timebox time) {
        Date result = date.getValue();
        try {
            if (result != null) {
                if (time != null) {
                    Date datetime = time.getValue();
                    if (datetime != null) {
                        String d1 = formatDate(result, "yyyy-MM-dd");
                        String d2 = formatDate(datetime, "HH:mm:ss");
                        result = parseToDate(d1 + " " + d2,
                                "yyyy-MM-dd HH:mm:ss");
                    }
                }
            }
        } catch (Exception e) {
        }
        return result;

    }


/**
     * TODO 根据日期获得星期
     * @author 邓超
     * @version 1.0
     * @time 2017-03-16
     * @param  List<DateMainTainVO>
     * @return String
     */
    public static String getWeekOfDate(Date date) {
        String[] weekDaysCode = { "7", "1", "2", "3", "4", "5", "6" };
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDaysCode[intWeek];
    }

0 0
原创粉丝点击