• DateUtil


    package com.resuce.common.util;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.apache.commons.lang.StringUtils;
    
    public class DateUtil {
        public static final String TIMEFULL = "yyyyMMddHHmmss";
        public static final String TIMEFULL_MS = "yyyyMMddHHmm";
        public static final String TIMEFULL_SS = "yyyy-MM-dd HH:mm:ss";
        public static final String TIMETomm = "yyyyMMddHHmm";
        public static final String TIMEDATE = "yyyyMMdd";
        public static final String TIMEDATE_SHORT = "yyMMdd";
        public static final long ONEDAY = 24L * 60L * 60L * 1000L;
        public static final long THREE_MONTH = 90L * ONEDAY;
    
        public static final int SECOND = 1000;
        public static final int MINUTE = SECOND * 60;
        public static final int HOUR = MINUTE * 60;
        public static final int DAY = HOUR * 24;
    
        /**
         * //日期to字符串
         * 
         * @param date
         * @param strFormat yyyy-MM-dd hh:mm:ss
         * @return
         * @throws Exception
         */
        public static String dateToStr(Date date, String strFormat) {
            String result = null;
            try {
                if (date != null) {
                    SimpleDateFormat format = new SimpleDateFormat(strFormat);
                    result = format.format(date);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        public static String dateToStr(Date date) {
            String result = null;
            if (date != null) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                result = format.format(date);
            }
            return result;
        }
    
        /**
         * 字符串to 日期
         * 
         * @param dateStr
         * @param strFormat
         * @return
         * @throws Exception
         */
        public static Date strToDate(String dateStr, String strFormat){
            Date date = new Date();
            try{
                SimpleDateFormat strToDate = new SimpleDateFormat(strFormat);
                date = strToDate.parse(dateStr);
            }catch(Exception e){
                return null;
            }
            return date;
        }
    
        public static Date strToDate(String dateStr) {
            Date date = null;
            SimpleDateFormat strToDate = new SimpleDateFormat("yyyy-MM-dd");
            try {
                date = strToDate.parse(dateStr);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                
                return null;
            }
            return date;
        }
    
        
        public static Date systime() throws Exception {
            Date date = new Date();
            SimpleDateFormat strToDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            date = strToDate.parse(formatDateTime(date));
            return date;
        }
        
        
        /*
         * 将日期格式为YYYY-MM-DD param date 日期
         */
        public static String format(Date date) {
            if(date == null){
                return "";
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(date);
        }
    
        /*
         * 将日期格式为yyyy-MM-DD hh:mm:ss param date 日期时间
         */
        public static String formatDateTime(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.format(date);
        }
    
        /*
         * 将日期格式为yyyy-MM-DD hh:mm:ss param date 日期时间
         */
        public static Date parseDateTime(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String dateStr = sdf.format(date);
            return formatStrToDate(dateStr);
        }
    
        /*
         * 将日期格式为hh:mm:ss param date 时间
         */
        public static String formatTime(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
            return sdf.format(date);
        }
    
        /*
         * 将日期格式为YYYY-MM-DD param date 日期
         */
        public static String format() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(new Date());
        }
    
        /*
         * 将日期格式为YYYY-MM-DD param date 日期
         */
        public static String formatDateTime() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.format(new Date());
        }
    
        /*
         * 将日期格式为hh:mm:ss param date 时间
         */
        public static String formatTime() {
            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
            return sdf.format(new Date());
        }
    
        /*
         * 将日期格式为指定格式 日期字符串
         */
        public static String formatTime(String dateFormatStr) {
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormatStr);
            return sdf.format(new Date());
        }
    
        public static String getYYMMDDStr() {
            SimpleDateFormat sdf = new SimpleDateFormat(TIMEDATE_SHORT);
            return sdf.format(new Date());
        }
        
        public static String getYYYYMMDDStr() {
            SimpleDateFormat sdf = new SimpleDateFormat(TIMEDATE);
            return sdf.format(new Date());
        }
    
        /*
         * 将日期格式为指定格式 日期字符串
         */
        public static String formatTime(Date date, String dateFormatStr) {
            SimpleDateFormat sdf = new SimpleDateFormat(dateFormatStr);
            return sdf.format(date);
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatStrToDate(String dateStr) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatStrToDate(String dateStr, String exp) {
            SimpleDateFormat sdf = new SimpleDateFormat(exp);
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将两位年日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date format2YearStrToDate(String dateStr) {
            SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatLoastModifyDateStrToDate(String dateStr) {
            if (!CheckUtil.checkValue(dateStr) && dateStr.length() > 3)
                return null;
            if (dateStr.endsWith("GMT") || dateStr.endsWith("UTC")) {
                dateStr = dateStr.substring(4, dateStr.length() - 3).trim();
            }
            dateStr = processorDateStr(dateStr);
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy-HH:mm:ss");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatDateTimeStrToDate(String dateStr) {
            if (!CheckUtil.checkValue(dateStr) && dateStr.length() > 3)
                return null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatDateTimeStrToDate2(String dateStr) {
            if (!CheckUtil.checkValue(dateStr) && dateStr.length() > 3)
                return null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatYearStrToDate(String dateStr) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        /*
         * 将日期字符串转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatYearStrToDate(String dateStr, String separator) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + separator + "MM");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        public static String processorDateStr(String dateStr) {
            if (!CheckUtil.checkValue(dateStr)) {
                return null;
            }
            String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
            String[] numMonths = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" };
            dateStr = dateStr.replaceAll("\s", "-");
            for (int i = 0; i < 12; i++) {
                int index = dateStr.indexOf(months[i].trim());
                if (index >= 0) {
                    dateStr = dateStr.replaceAll(months[i], numMonths[index]);
                    return dateStr;
                }
            }
            return dateStr;
        }
    
        public static boolean isDate(String value) {
            String regex = "^[0-9]{2,4}[-][0-9]{1,2}[-][0-9]{1,2}$";
            if (value == null) {
                return false;
            }
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(value);
            return m.find();
        }
    
        public static Date getDate(String dateStr) {
            if (CheckUtil.checkEmpyt(dateStr)) {
                return new Date(0);
            }
            String regex = "[0-9]{2,4}[-][0-9]{1,2}[-][0-9]{1,2}";
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(dateStr);
            if (m.find()) {
                String dStr = m.group();
                return DateUtil.formatStrToDate(dStr);
            }
            return new Date(0);
        }
    
        public static boolean isDateTime(String value) {
            String regex = "^[0-9]{2,4}[-][0-9]{1,2}[-][0-9]{1,2}\s*[0-9]{2}[:][0-9]{2}[:][0-9]{2}$";
            if (value == null) {
                return false;
            }
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(value);
            return m.find();
        }
    
        /*
         * 转化为Date
         */
        @SuppressWarnings("finally")
        public static Date formatDateTimeStrToDate2(Date date, String regex) {
            if (date == null || !CheckUtil.checkEmpyt(regex))
                return date;
            SimpleDateFormat sdf = new SimpleDateFormat(regex);
            // Date date = null;
            // System.out.println("asdfasdfasdf");
            try {
                String dateStr = sdf.format(date);
                // System.out.println(dateStr);
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
    
        public static boolean isDate(String value, String spe) {
            String regex = "^[0-9]{2,4}[" + spe + "][0-9]{1,2}$";
            if (value == null) {
                return false;
            }
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(value);
            return m.find();
        }
    
        /*
         * 获取日期中的年份
         */
        public static String getYear(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
            return sdf.format(date);
        }
        /*
         * 获取日期中的月份
         */
        public static String getMonth(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("MM");
            return sdf.format(date);
        }
        
        private static String getExps(String value, String[] exps, String[] space) {
            // String dateExp = null;
            for (String spa : space) {
                for (String exp : exps) {
                    String tempExp = exp.replaceAll("#", spa);
                    String[] items = tempExp.split("\|");
                    if (!CheckUtil.checkEmpyt(items) || items.length != 2) {
                        continue;
                    }
                    Pattern p = Pattern.compile(items[0]);
                    Matcher m = p.matcher(value);
                    if (m.find()) {
                        return items[1];
                    }
                }
            }
            return null;
        }
    
        /**
         * 将日期字符串转换为Date,注,如果没有年份的,则转换出的值为1970年XX月XX日,如果没有月份,则为01月,如果年月都没有,
         * 则为1970年01月X日 将日期转换为Date,如果日期字符串中没有年,则默认为系统当前年份,如果得出的日期大于当前的年份,则减少一年
         * @param value 日期字符表达式
         * @param isReduce 指示是否需需要减小一年,false不减少,true减小
         */
        public static Date toDate(String value, boolean isReduce) {
            if (!CheckUtil.checkEmpyt(value))
                return null;
            value = value.replaceAll("&nbsp;", " ");
            int sign = 0;
            String[] space = { "-", "/", "." };
            String[] timeSpace = { ":" };
            String[] regexExpsYMD = { "[0-9]{4}[#][0-9]{2}[#][0-9]{2}|yyyy#MM#dd", "[0-9]{4}[#][0-9]{1}[#][0-9]{1}|yyyy#M#d", "[0-9]{4}[#][0-9]{1}[#][0-9]{2}|yyyy#M#dd", "[0-9]{4}[#][0-9]{2}[#][0-9]{1}||yyyy#MM#d",
                    "[0-9]{2}[#][0-9]{2}[#][0-9]{2}|yy#MM#dd", "[0-9]{2}[#][0-9]{1}[#][0-9]{1}|yy#M#d", "[0-9]{2}[#][0-9]{1}[#][0-9]{2}|yy#M#dd", "[0-9]{2}[#][0-9]{2}[#][0-9]{1}|yy#MM#d" };
            String[] regexExpsYM = { "[0-9]{4}[#][0-9]{2}|yyyy#MM", "[0-9]{4}[#][0-9]{1}|yyyy#M" };
            String[] regexExpsMd = { "[0-9]{2}[#][0-9]{2}|MM#dd", "[0-9]{2}[#][0-9]{1}|MM#d", "[0-9]{1}[#][0-9]{1}|M#d", "[0-9]{1}[#][0-9]{2}|#M#d" };
            String[] regexExpsD = { "[0-9]{2}|dd", "[0-9]{1}|d" };
            // String[] timeExpHMS = { "\s[0-9]{2}[:][0-9]{2}[:][0-9]{2}|HH#mm#ss",
            // "\s?[0-9]{2}[:][0-9]{2}[:][0-9]{1}|HH#mm#s",
            // "\s?[0-9]{2}[:][0-9]{1}[:][0-9]{2}|HH#m#ss" };
            String[] timeExpHMS = { "\s[0-9]{2}[:][0-9]{2}[:][0-9]{2}|HH#mm#ss", "\s?[0-9]{2}[:][0-9]{2}[:][0-9]{1}|HH#mm#s", "\s?[0-9]{2}[:][0-9]{1}[:][0-9]{2}|HH#m#ss", "\s?[0-9]{1}[:][0-9]{1}[:][0-9]{2}|H#m#ss",
                    "\s?[0-9]{1}[:][0-9]{1}[:][0-9]{1}|H#m#s", "\s?[0-9]{1}[:][0-9]{2}[:][0-9]{1}|H#mm#s", "\s?[0-9]{1}[:][0-9]{2}[:][0-9]{2}|H#mm#ss", "\s?[0-9]{2}[:][0-9]{1}[:][0-9]{2}|HH#m#ss", "\s?[0-9]{2}[:][0-9]{2}[:][0-9]{1}|HH#mm#s" };
    
            String[] timeExpHM = { "\s[0-9]{2}[:][0-9]{2}|HH#mm" };
            String[] timeExpH = { "\s[0-9]{2}|HH" };
            String dateExp = getExps(value, regexExpsYMD, space);
            if (dateExp == null)
                dateExp = getExps(value, regexExpsYM, space);
            if (dateExp == null) {
                dateExp = getExps(value, regexExpsMd, space);
                if (dateExp != null) {
                    sign = 1;
                }
            }
            if (dateExp == null) {
                dateExp = getExps(value, regexExpsD, space);
                if (dateExp != null) {
                    sign = 1;
                }
            }
            String timeExp = getExps(value, timeExpHMS, timeSpace);
            if (timeExp == null)
                timeExp = getExps(value, timeExpHM, timeSpace);
            if (timeExp == null)
                timeExp = getExps(value, timeExpH, timeSpace);
            String exp = "";
            if (CheckUtil.checkEmpyt(dateExp) && CheckUtil.checkEmpyt(timeExp)) {
                exp = dateExp + " " + timeExp;
            } else if (CheckUtil.checkEmpyt(dateExp)) {
                exp = dateExp;
            } else if (CheckUtil.checkEmpyt(timeExp)) {
                exp = timeExp;
            }
            if (CheckUtil.checkEmpyt(exp)) {
                Date date = formatStrToDate(value, exp);
                if (sign != 0) {
                    long years = formatStrToDate(getYear(new Date()), "yyyy").getTime() - formatStrToDate(getYear(date), "yyyy").getTime();
                    Date curDate = new Date(date.getTime() + years);
                    if (isReduce) {
                        years = formatStrToDate(getYear(new Date()), "yyyy").getTime() - formatStrToDate(new Integer(new Integer(getYear(date)).intValue() + 1).toString(), "yyyy").getTime();
                    } else {
                        years = formatStrToDate(getYear(new Date()), "yyyy").getTime() - formatStrToDate(new Integer(new Integer(getYear(date)).intValue()).toString(), "yyyy").getTime();
                    }
                    return new Date(date.getTime() + 24L * 3600L * 1000L + years);
                }
                return date;
            }
            return null;
        }
    
        public static Date toZhDate(String dateStr) {
            if (!CheckUtil.checkEmpyt(dateStr)) {
                return null;
            }
            return toZhDate(dateStr, false);
        }
    
        public static Date toZhDate(String dateStr, boolean isReduce) {
            if (!CheckUtil.checkEmpyt(dateStr)) {
                return null;
            }
            dateStr = dateStr.replaceAll("[u4e00-u9fa5]{1,}[-/_=*+.-/—+。*][u4e00-u9fa5]{1,}", "");
            dateStr = resetDateStr(dateStr);
            dateStr = dateStr.replaceAll("年", "-").replaceAll("月", "-").replaceAll("日", "").replaceAll("小时", ":").replaceAll("点", ":").replaceAll("时", ":").replaceAll("分钟", ":").replaceAll("分", ":").replaceAll("秒钟", ":").replaceAll("秒", "");
            dateStr = dateStr.replaceAll("[u4e00-u9fa5]{1,}", "").replaceAll("::", ":").replaceAll("--", "-").replaceAll("//", "-").replaceAll("/-", "-").replaceAll("-/", "-").replaceAll("/-", "-").replaceAll(":/", ":").replaceAll("/:", ":")
                    .replaceAll(":-", ":").replaceAll("-:", ":");
            if (dateStr.endsWith(":") || dateStr.endsWith("-") || dateStr.endsWith("/")) {
                dateStr = dateStr.substring(0, dateStr.length() - 1);
            }
            if (dateStr.startsWith(":") || dateStr.startsWith("-") || dateStr.startsWith("/")) {
                dateStr = dateStr.substring(1, dateStr.length());
            }
            return toDate(dateStr, isReduce);
        }
    
        public static String resetDateStr(String dateStr) {
            Pattern p = Pattern.compile("[0-9]{0,4}[-年份/_#.;]{0,2}[0-9]{0,2}[-月份/_#.;]{1,2}[0-9]{0,2}[-日天/_#.;]{1,2}[\s&nbsp; ]{1,}[0-9]{0,2}[:点时小/_#.;]{0,2}[0-9]{0,2}[:分钟/_#.;]{0,2}[0-9]{0,2}[:秒钟/_#.;]{0,2}");
            Matcher m = p.matcher(dateStr);
            String value = dateStr;
            while (m.find()) {
                value = m.group();
                if (value.length() <= 2)
                    continue;
                break;
    
            }
            return value;
        }
    
        public static void main (String[] args) {
    
            // u4e00-u9fa5表示中文,uFF00-uFFFF表示全角 其它表示一些特殊字符.
            // Date date = toDate("2011-11-15 15:32:48", false);
            // Date date2 = toZhDate("2011年11月15日 15点02分36秒");
            // Date date3 = toZhDate("2011年1月");
            // // Date date4 = toZhDate("绩效考核&nbsp;&nbsp;2011-6-13 13:09:47");
            // System.out.println(date3);
            // System.out.println(date2);
            // System.out.println(date);
            // // System.out.println(date4);
            // System.out.println(toDate("11/24 08:46", false));
            // System.out.println(formatDateTime(toDate("11/24 08:46", true)));
            // System.out.println(formatDateTime(toDate("11/24 08:46", false)));
            // // System.out.println(formatDateTime(date));
            // System.out.println(toZhDate("重庆商报 01月06日 13:18"));
            // System.out.println(toZhDate("重庆商报-分社 01月06日 13:18"));
            // System.out.println(toZhDate("2012年01月06日&nbsp;13:57"));
            // //
            // System.out.println(" (重庆商报 01月06日 13:18)".replaceAll("[u4e00-u9fa5]{1,}",
            // // ""));
            // System.out.println(toZhDate("2012年01月06日&nbsp;13点57分"));
            // System.out.println(toZhDate("重庆商报*分社 2012年/01月/06日&nbsp;13点:57分:29秒"));
            // System.out.println(toZhDate("重庆商报*分社2012年/01月/06日&nbsp;13点:57分:29秒"));
            // System.out.println(toZhDate("c114.net 2012年/01月/06日&nbsp;13点:57分:29秒"));
            // System.out.println(toZhDate("c114.net 2012年/01月/06日&nbsp;13点:57分:29秒"));
            // System.out.println(toZhDate("四川在线-天府早报 01月06日 10:26"));
            // System.out.println(toZhDate("1/4"));
            // System.out.println(toZhDate("2012-1-10 9:35:35"));
            // System.out.println("2012-1-10 9:35:35");
            // System.out.println(resetDateStr("2012-1-10 9:35:35"));
            // System.out.println(toZhDate("2012-1-10 9:1:33"));
            // System.out.println(toZhDate(" 新浪科技 01月11日 11:37",true));
            System.out.println(DateUtil.formatDateTime(toZhDate(" 北京晚报 04月09日 15:10", false)));
            System.out.println(DateUtil.formatDateTime(toZhDate("2011/12/31 09:51", false)));
            // System.out.println("c114.net.cn.g 2012年01月06日&nbsp;13点:57分:29秒".replaceAll("(^[\w*\.*]{2,})",
            // ""));
            // System.out.println(" 比特网chinabyte 01月05日 10:21".replaceAll("(^[\w*\.*]{2,})",
            // ""));
            // System.out.println(DateUtil.getDateValue(YEAR_REGEX,
            // " 比特网chinabyte 2012年01月05日 10:21"));
            // List<String> dates = new ArrayList<String>();//
            // dates.add("年份01");
            // dates.add("2012年份");
            // dates.add("2012年");
            // System.out.println(dateStrFilter(dates));
            // Arrays.sort(dates);
            // for (String date : dates) {
            // System.out.println(date);
            // }
            // String date = " 比特网chinabyte 2012-01.05 10:21:36";
            // String date = "c114.net 01月/06日&nbsp;13点:57分:29秒";
            // String date = "1/4";
            // Pattern p =
            // Pattern.compile("[0-9]{0,4}[-年份/_#.;]{0,2}[0-9]{0,2}[-月份/_#.;]{1,2}[0-9]{0,2}[-日天/_#.;]{1,2}[\s&nbsp;]{0,}[0-9]{0,2}[:点时小/_#.;]{0,2}[0-9]{0,2}[:分钟/_#.;]{0,2}[0-9]{0,2}[:秒钟/_#.;]{0,2}");
            // Matcher m = p.matcher(date);
            // if (m.find()) {
            // System.out.println(m.group());
            // }
            // if (m.find()) {
            // System.out.println(m.group());
            // }
    //        System.out.println(sysTimeAddDayNum(2));
    //        System.out.println(sysTimeAddDayNum(-2));
            
    //        Date start = DateUtil.getBeginingOfTheDay("2015-02-28");
    //        System.out.println(start);
    //        
    //        for(int i = 0; i < 12; i++){
    //            Date end = DateUtil.addOneMonthAndOneDayMinusOneSecond(start);
    //            System.out.println("start = " + DateUtil.formatDateTime(start) + " end = " + DateUtil.formatDateTime(end));
    //            
    //            start = DateUtil.getBeginingOfTheDay(end);
    //        }
    //        
            Date start = DateUtil.getEndOfTheDay("2015-05-10 ");
            System.out.println(DateUtil.naturalDaysDifference(start, DateUtil.now()));
        }
    
        public static boolean isOneMinuteAgo(Date pastDate){
            Date newDate = DateUtil.addMinutes(pastDate, 1);
    
            Date now = new Date();
    
            return now.after(newDate);
        }
    
        public static Date addMinutes(Date date, int minutesToAdd){
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.MINUTE, minutesToAdd);
    
            return new Date(c.getTimeInMillis());
        }
    
        public static Date addDays(Date date, int daysToAdd){
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.DATE, daysToAdd);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date addDaysAndMinusOneSecond(Date date, int daysToAdd){
            date = addDays(date, daysToAdd);
            
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.SECOND, -1);
    
            return new Date(c.getTimeInMillis());
        }
    
    
        public static long hoursDifference(Date startDate, Date endDate){
            return (endDate.getTime() - startDate.getTime()) / HOUR;
        }
    
        /**
         * @param startDate
         * @param endDate
         * @return 自然天的天数之差
         */
        public static int naturalDaysDifference(Date startDate, Date endDate){
            Calendar c = Calendar.getInstance();
            c.setTime(startDate);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.HOUR_OF_DAY, 0);
    
            int days = (int)((endDate.getTime() - c.getTimeInMillis()) / DAY);
            
            if(days == 0 && (endDate.getTime() > c.getTimeInMillis())){
                days = 1;
            }
            
            return days;
        }
    
        public static long hoursToNow(Date startDate){
            return hoursDifference(startDate, now());
        }
    
        public static Date now(){
            return new Date();
        }
        
        public static Date getBeginingOfTheDay(String date){
            if(StringUtils.isBlank(date)){
                return null;
            }
            
            return formatStr2Date(date + " 0:00:00");
        }
        
        public static Date getBeginingOfTheDay(Date date){
            if(date == null){
                return null;
            }
            
            return getBeginingOfTheDay(format(date));
        }
        
        public static Date getEndOfTheDay(String date){
            if(StringUtils.isBlank(date)){
                return null;
            }
            
            return formatStr2Date(date + " 23:59:59");
        }
    
        public static Date tomorrow(){
            return addDays(now(), 1);
        }
    
        public static Date addMonths(Date start, int months){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.MONTH, months);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date addYears(Date start, int years) {
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.YEAR, years);
            return new Date(c.getTimeInMillis());
        }
        
        public static Date addSeconds(Date start, int seconds){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.SECOND, seconds);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date addHours(Date start, int hours){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.HOUR_OF_DAY, hours);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date getFirstDayOfMonthByGivenDate(int year, int month){
            Date now = now();
            
            Calendar c = Calendar.getInstance();
            c.setTime(now);
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, month);
            c.set(Calendar.DAY_OF_MONTH, 1);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.HOUR_OF_DAY, 0);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date getFirDayOfCurrentMonth(){
            Date now = now();
            
            Calendar c = Calendar.getInstance();
            c.setTime(now);
            
            return getFirstDayOfMonthByGivenDate(c.get(Calendar.YEAR), c.get(Calendar.MONTH));
        }
        
        public static Date getFirDayOfNextMonth(){
            Date now = now();
            
            Calendar c = Calendar.getInstance();
            c.setTime(now);
            
            return getFirstDayOfNextMonthByGivenDate(c.get(Calendar.YEAR), c.get(Calendar.MONTH));
        }
        
        public static Date getFirstDayOfNextMonthByGivenDate(int year, int month){
            Date date = getFirstDayOfMonthByGivenDate(year, month);
            
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(Calendar.MONTH, 1);
    
            return new Date(c.getTimeInMillis());
        }
    
        public static Date addOneMonthMinusOneDay(Date start){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.MONTH, 1);
            c.add(Calendar.DATE, -1);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static Date addOneMonthAndOneDayMinusOneSecond(Date start){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            c.add(Calendar.MONTH, 1);
            c.add(Calendar.DATE, 1);
            c.add(Calendar.SECOND, -1);
    
            return new Date(c.getTimeInMillis());
        }
        
        //计算下个月的还款时间,按照自然月的方式处理
        public static Date getLoanTermDueTime(Date start){
            Calendar c = Calendar.getInstance();
            c.setTime(start);
        
            c.add(Calendar.MONTH, 1);
            c.add(Calendar.SECOND, -1);
    
            return new Date(c.getTimeInMillis());
        }
        
        public static int getLastDayOfCurrentMonth(Date date){
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            
            //将日期设置到下个月的第一天
            c.add(Calendar.MONTH, 1); 
            c.set(Calendar.DAY_OF_MONTH, 1);
            //日期间一天(即返回当前月的最后一天)
            c.add(Calendar.DATE, -1);
            
            return c.get(Calendar.DAY_OF_MONTH);
        }
    
        public static boolean isPastStatTime(Date startDate){
            return DateUtil.now().after(startDate);
        }
    
        public static boolean isBetweenTime(Date startTime, Date dueTime){
            return false;
        }
    
        public static boolean isPastOverDueTime(Date dueDate){
            Calendar c = Calendar.getInstance();
            c.setTime(dueDate);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.add(Calendar.DATE, 1);
    
            return DateUtil.now().after(c.getTime());
        }
        
        public static boolean isPastNow(Date dueTime){
            if(dueTime != null){
                return now().after(dueTime);
            }
            return false;
        }
        
        //********************start************************************
        /**
         * @Title: String2Date 
         * @Description: { String Date 2 yyyy-MM Date }
         * @file_name: DateUtil.java
         * @user:DING
         */
        //String2Date
        public static Date String2Date(String dateStr) throws Exception {
            Date date = new Date();
            SimpleDateFormat strToDate = new SimpleDateFormat("yyyy-MM");
            date = strToDate.parse(dateStr);
            return date;
        }
        /**
         * @Title: parseDate 
         * @Description: { 将日期格式为yyyy-MM-DD hh:mm:ss param date 日期时间  }
         * @file_name: DateUtil.java
         * @user:DING
         */
        public static Date parseDate(Date date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String dateStr = sdf.format(date);
            return formatStr2Date(dateStr);
        }
    
        /**
         * @Title: formatStr2Date 
         * @Description: { 将日期字符串转化为Date }
         * @file_name: DateUtil.java
         * @user:DING
         */
        @SuppressWarnings("finally")
        public static Date formatStr2Date(String dateStr) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            } finally {
                return date;
            }
        }
        
        /**
         * @Title: sysTimeAddDayNum 
         * @Description: { 得到当前时间的前或后天数 时间 }
         * @file_name: DateUtil.java
         * @user:DING
         */
        public static String sysTimeAddDayNum(int DayNum) {
             SimpleDateFormat format = new   SimpleDateFormat("yyyy-MM-dd"); 
    
               Date dd = new Date();
    
               Calendar calendar = Calendar.getInstance();
    
               calendar.setTime(dd);
    
               calendar.add(Calendar.DATE,DayNum); 
    
               String newDate = format.format(calendar.getTime() ) ;
    
               return         newDate;
        }
        
        public static  String getAge(Date birthDay) throws Exception {
            Calendar cal = Calendar.getInstance();
            if (cal.before(birthDay)) {
                throw new IllegalArgumentException(
                    "The birthDay is before Now.It's unbelievable!");
            }
            int yearNow = cal.get(Calendar.YEAR);
            int monthNow = cal.get(Calendar.MONTH)+1;
            int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
            cal.setTime(birthDay);
            int yearBirth = cal.get(Calendar.YEAR);
            int monthBirth = cal.get(Calendar.MONTH);
            int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
            int age = yearNow - yearBirth;
            if (monthNow <= monthBirth) {
                if (monthNow == monthBirth) {
                    //monthNow==monthBirth
                    if (dayOfMonthNow < dayOfMonthBirth) {
                        age--;
                    }
                } else {
                    //monthNow>monthBirth
                    age--;
                }
            }
            return age +"";
        } 
        
        
         //判断是否为同一天  
        public static  boolean getWhetherSameDay(Date date){
            //系统时间
            if(formatTime(now(),TIMEDATE).equals(formatTime(date,TIMEDATE))){
                return true;
            }
            return false;
        } 
        
        
        
        
         
        //******************end****************************************
    }
  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
    作业
    C语言I博客作业02
  • 原文地址:https://www.cnblogs.com/mengyuxin/p/5459156.html
Copyright © 2020-2023  润新知