zoukankan      html  css  js  c++  java
  • DateUtil

    public class GenernalDate {
        //一天秒数
        public final static long MILLISECONDS_OF_DAY = 1000 * 60 * 60 * 24;
        public final static int NULL_DATE = 19000101;
        private final static int days[] = {31,29,31,30,31,30,31,31,30,31,30,31};
    
        public final static int DATETIME_LENGTH = 14;
        public final static int DATE_LENGTH = 8;
        public final static int TIME_LENGTH = 6;
        public final static int TIME_LENGTH_2 = 5;//091213 中在数据库中存放的是91213
    
    
    
        /**
         * 日期转换
         * @param date 三种格式  20100421153055|20100421|153055
         * @return
         * @throws ParseException
         * @throws XdealException
         */
        public static Date parse(long date)throws BusinessException{
            String dateStr = String.valueOf(date);
    
            boolean isDate = false,isTime = false,isDateTime = false;
            int length = dateStr.length();
            if(length==DATETIME_LENGTH){
                isDateTime = true;
            }else if(length==DATE_LENGTH){
                isDate = true;
            }else if(length==TIME_LENGTH || length==TIME_LENGTH_2){
                isTime = true;
            }else {
                throw new BusinessException("Date format is not correct["+dateStr+"]");
            }
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            try{
                if (isDateTime) { //日期时间
                    sf.applyPattern("yyyyMMddHHmmss");
                    return sf.parse(dateStr);
                } else if (isDate) {
                    sf.applyPattern("yyyyMMdd");
                    return sf.parse(dateStr);
                } else if (isTime) {
                    sf.applyPattern("HHmmss");
                    return sf.parse(dateStr);
                }
            }catch(ParseException pe){
                throw new BusinessException(pe.getMessage());
            }
    
            return new Date(0);
        }
    
    
    
        //--------------------显示格式化日期-------------------------------
    
        /**
         * 返回默认格式的字符串日期 时间
         * @param dateTime  日期+时间
         * @return yyyy-MM-dd HH:mm:ss格式的字符串日期 时间
         */
        public static String formatDateTime(Date dateTime){
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            sf.applyPattern("yyyy-MM-dd HH:mm:ss");
            return sf.format(dateTime);
        }
    
        /**
         * 返回默认格式的字符串日期 时间
         * @param dateTime  日期+时间:20100421120101
         * @return yyyy-MM-dd HH:mm:ss格式的字符串日期 时间
         */
        public static String formatDateTime(long dateTime)throws BusinessException{
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            sf.applyPattern("yyyy-MM-dd HH:mm:ss");
            return sf.format(parse(dateTime));
        }
    
    
        /**
         * 返回字符串日期
         * @param date
         * @return yyyy-MM-dd格式的字符串日期
         */
        public static String formatDate(Date date) {
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            sf.applyPattern("yyyy-MM-dd");
            return sf.format(date);
        }
    
        /**
         * 返回字符串日期
         * @param date 日期 20100421
         * @return yyyy-MM-dd格式的字符串日期
         */
        public static String formatDate(int date)throws BusinessException {
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            sf.applyPattern("yyyy-MM-dd");
            return sf.format(parse(date));
        }
    
        /**
         * 返回字符串时间
         * @param time
         * @return HH:mm:ss格式的字符串日期
         */
        public static String formatTime(Date time) {
            SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
            sf.applyPattern("HH:mm:ss");
            return sf.format(time);
        }
    
        /**
         * 返回字符串时间
         * @param time 时间 120130
         * @return HH:mm:ss格式的字符串日期
         */
        public static String formatTime(int time)throws BusinessException {
            StringBuffer buffer = new StringBuffer();
            buffer.append(time);
            int a = 6-buffer.length();
            for(int i=0;i<a;i++){
                buffer.insert(0, "0");        //在stringbuffer 的第一个位置添加  0
            }
             return formatTime(buffer.toString());
        }
        /**
         *
         * @param time
         * @return HH:mm:ss格式的字符串日期
         */
      private static String formatTime(String time){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        if(time.indexOf(":")!=-1){
            sf.applyPattern("HH:mm:ss");
        }else{
            sf.applyPattern("HHmmss");
        }
        Date date=null;
        try {
            date = sf.parse(time);
        } catch (ParseException e) {
            date=new Date();
        }
        sf.applyPattern("HH:mm:ss");
        return sf.format(date);
    }
    
        /**
         * 返回日期
         * @param
         * @return int 20140523
         */
        public static int formatDateStrToDateInt(String datestr)throws RuntimeException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = sdf.parse(datestr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            if(date == null){
                return 0;
            }
            return getNumericDate(date);
        }
    
        //------------------------读取日期--------------------------------------
    
        /**
         * 读取当前的日期+时间
         * return long 20100421132630
         */
        public static long getNumericDateTime(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMddHHmmss");
            String dateTime = sf.format(Calendar.getInstance().getTime());
            return Long.parseLong(dateTime);
        }
    
        /**
         * 读取当前的日期+时间
         * return String 2010-04-21 13:26:30
         */
        public static String getStringDateTime(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyy-MM-dd HH:mm:ss");
            return sf.format(Calendar.getInstance().getTime());
        }
    
        /**
         * Date类型(日期+时间) 转换为 long 类型
         * @param dateTime
         * @return long 20100421132630
         */
        public static long getNumericDateTime(Date dateTime){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMddHHmmss");
            return Long.parseLong(sf.format(dateTime));
        }
    
        /**
         * 读取当前日期
         * @return int 20100421
         */
        public static int getNumericDate(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMdd");
            String date = sf.format(Calendar.getInstance().getTime());
            return Integer.parseInt(date);
        }
    
        /**
         * 读取当前的日期
         * return String 2010-04-21
         */
        public static String getStringDate(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyy-MM-dd");
            return sf.format(Calendar.getInstance().getTime());
        }
    
        /**
         * Date类型  转换为 int 类型
         * @param date
         * @return int 20100421
         */
        public static int getNumericDate(Date dateTime){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMdd");
            return Integer.parseInt(sf.format(dateTime));
        }
    
        /**
         * String类型  转换为 int 类型
         * @param date
         * @return int 20100421
         */
        public static int getDateStrToNumeric(String dateTimeStr)throws ParseException {
            Date date = parseDate(dateTimeStr);
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMdd");
            return Integer.parseInt(sf.format(date));
        }
    
        /**
         * String类型  转换为 int 类型
         * @param time
         * @return int 131223
         */
        public static int getDateStrToTimeInt(String timeStr)throws ParseException {
            Date date = parseTime(timeStr);
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("HHmmss");
            return Integer.parseInt(sf.format(date));
        }
    
        /**
         * 读取当前时间
         * @return int 132630
         */
        public static int getNumericTime(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("HHmmss");
            String date = sf.format(Calendar.getInstance().getTime());
            return Integer.parseInt(date);
        }
    
        /**
         * 读取当前时间
         * return String 13:26:30
         */
        public static String getStringTime(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("HH:mm:ss");
            return sf.format(Calendar.getInstance().getTime());
        }
    
        /**
         * Date类型  转换为 int 类型
         * @param time
         * @return int 132630
         */
        public static int getNumericTime(Date dateTime){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("HHmmss");
            return Integer.parseInt(sf.format(dateTime));
        }
    
    
        /**
         * + 表达式 d,w,m,y
         * @param date 起始日期
         * @param exp 表达式类型:d/D 天; w/W 周; m/M 月; y/Y 年
         * @param mul 乘数,一般是第mul期,如exp:7d,mul:2,则为加7*2d
         * @param monthEnd 月末是否对齐
         * @return 计算后的Date日期
         * @throws ParseException
         * @throws NumberFormatException
         */
        public static int add(int date,String exp, int mul, boolean monthEnd)throws BusinessException{
            if(null==exp||exp.length() <= 1 ) {
                throw new BusinessException("payFreq is null!");
            }
            exp=exp.trim();
            int len = exp.length();
            int num = Integer.parseInt(exp.substring(0, len - 1)) * mul;
            int ndate = 0;
            switch (exp.charAt(len - 1)) {
            case 'd':
            case 'D':
                return addNumericDays(date, num);
            case 'w':
            case 'W':
                return addNumericDays(date, num * 7);
            case 'm':
            case 'M':
                ndate =  addNumericMonths(date, num);
                break;
            case 'y':
            case 'Y':
                ndate =   addNumericYears(date, num);
                break;
            default:
                return addNumericDays(date, Integer.parseInt(exp));
            }
            if( monthEnd && ndate != 0  ) {//&& isMonthEnd(date)
                return getMonthEnd(ndate);
            } else {
                return ndate;
            }
        }
    
        /**
         * 增加清算速度或期限
         * @param date 日期 20100421
         * @param term 0|1|1d|1w|1w|1m|1y
         * @return 日期 20100421
         * @throws Exception
         */
        public static int addTerm(int date,String term)throws BusinessException{
            if(term == null || term.trim().length()==0){
                throw new BusinessException("payFreq is null!");
            }else if(term.trim().length()==1){
                int days = Integer.parseInt(term);
                return addNumericDays(date,days);
            }else {
                return add(date,term,1,false);
            }
        }
    
    
        /**
         * 返回日期的月末时间
         * @param date
         * @return Date
         */
        public static int getMonthEnd(int date)throws BusinessException {
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(parse(date));
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
            return getNumericDate(cal.getTime());
        }
    
    
        /**
         * 返回日期的月初时间
         * @param date
         * @return Date
         */
        public static int getMonthStart(int date)throws BusinessException {
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(parse(date));
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH));
            return getNumericDate(cal.getTime());
        }
    
        /**
         * 两日期相减
         * @param endDate 到期日期
         * @param startDate 开始日期
         * @return 天数
         * @throws ParseException
         */
        public static int offsetDays(int endDate,int startDate) throws BusinessException{
            return offsetDays(parse(endDate),parse(startDate));
        }
    
        /**
         * 两个日期相减,参数为Date型
         * @param endDate
         * @param startDate
         * @return int 天数
         */
        public static int offsetDays(Date endDate, Date startDate) {
            return (int) ((endDate.getTime() - startDate.getTime()) / MILLISECONDS_OF_DAY);
        }
    
        /**
         * 读取月份
         * @param date
         * @return
         * @throws ParseException
         */
        public static int getMonth(int date) throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(date));
            return cl.get(Calendar.MONTH);
        }
    
        //-----------------------日期运算-------------------------------
    
        /**
         * 增加年
         * @param date 20100421
         * @param years 年数
         * @return int 20100421
         * @throws ParseException
         * @throws Exception
         */
        public static int addNumericYears(int date,int years) throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(date));
            cl.add(Calendar.YEAR, years);
            return getNumericDate(cl.getTime());
        }
    
        /**
         * 增加年
         * @param date 20100421143022
         * @param years 年数
         * @return long 20100421143022
         * @throws Exception
         */
        public static long addNumericYears(long dateTime,int years)throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(dateTime));
            cl.add(Calendar.YEAR, years);
            return getNumericDateTime(cl.getTime());
        }
    
    
        /**
         * 增加月
         * @param date 20100421
         * @param months 月数
         * @return int 20100421
         * @throws ParseParseException
         * @throws ParseException
         */
        public static int addNumericMonths(int date,int months) throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(date));
            cl.add(Calendar.MONTH, months);
            return getNumericDate(cl.getTime());
        }
    
        /**
         * 增加月
         * @param date 20100421143022
         * @param months 月数
         * @return long 20100421143022
         * @throws ParseException
         */
        public static long addNumericMonths(long dateTime,int months)throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(dateTime));
            cl.add(Calendar.MONTH, months);
            return getNumericDateTime(cl.getTime());
        }
    
        /**
         * 增加日
         * @param date 20100421
         * @param days 日数
         * @return int 20100421
         * @throws ParseParseException
         * @throws ParseException
         */
        public static int addNumericDays(int date,int days) throws BusinessException{
            return getNumericDate(new Date(parse(date).getTime()+days*MILLISECONDS_OF_DAY));
        }
    
        /**
         * 增加日
         * @param date 20100421
         * @param days 日数
         * @return int 20100421
         * @throws ParseParseException
         * @throws ParseException
         */
        public static int addDays(int date,String exp) throws BusinessException{
            int days=getDays(exp);
            return getNumericDate(new Date(parse(date).getTime()+days*MILLISECONDS_OF_DAY));
        }
    
        /**
         * 增加日
         * @param date 20100421143022
         * @param days 日数
         * @return long 20100421143022
         * @throws ParseException
         */
        public static long addNumericDays(long dateTime,int days)throws BusinessException{
            return getNumericDateTime(new Date(parse(dateTime).getTime()+days*MILLISECONDS_OF_DAY));
        }
    
        /**
         * 增加小时
         * @param dateTime 20100421143022
         * @param hours 小时数
         * @return long 20100421143022
         * @throws ParseException
         */
        public static long addNumericHours(long dateTime,int hours)throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(dateTime));
            cl.add(Calendar.HOUR, hours);
            return getNumericDateTime(cl.getTime());
        }
    
    
        /**
         * 增加分
         * @param dateTime 20100421143022
         * @param minutes 小时数
         * @return long 20100421143022
         * @throws ParseException
         */
        public static long addNumericMinutes(long dateTime,int minutes)throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(dateTime));
            cl.add(Calendar.MINUTE, minutes);
            return getNumericDateTime(cl.getTime());
        }
    
        /**
         * 增加秒
         * @param dateTime 20100421143022
         * @param seconds 秒
         * @return long 20100421143022
         * @throws ParseException
         */
        public static long addNumericSeconds(long dateTime,int seconds)throws BusinessException{
            Calendar cl = Calendar.getInstance();
            cl.setTime(parse(dateTime));
            cl.add(Calendar.SECOND, seconds);
            return getNumericDateTime(cl.getTime());
        }
    
    
        /**
         * 用于有效时间
         * 时间 + 秒数  如果增加的秒数使日期大于24小时,则返回235959
         * @param time 时间
         * @param seconds 秒数
         * @return
         */
        public static int addValidatTimeSeconds(int time,int seconds){
            int sec = time % 100;
            int min = (time/100)%100;
            int hour = time/10000;
    
            System.out.println("Now Time:Hour["+hour+"]Min["+min+"]Sec["+sec+"]");
    
            int t_sec = seconds%60;
            int t_min = (seconds%3600)/60;
            int t_hour = seconds/3600;
    
            System.out.println("Add Time:Hour["+t_hour+"]Min["+t_min+"]Sec["+t_sec+"]");
    
            if((sec+t_sec)>=60){
                min+=1;
                sec = sec+t_sec - 60;
            }else{
                sec = sec+t_sec ;
            }
    
            if((min+t_min)>=60){
                hour+=1;
                min = min+t_min-60;
            }else{
                min = min+t_min;
            }
    
            hour+=t_hour;
            if(hour>=24){
                return 235959;
            }
    
            return hour*10000+min*100+sec;
        }
    
        //---------------------日期检查------------------------------------
    
        /**
         * 检查日期时间
         * @param dateTime 20100421152622
         * @throws ParseException
         */
        public static void checkDateTime(long dateTime)throws BusinessException{
            long orginDateTime = dateTime;
            long newDateTime = getNumericDateTime(parse(dateTime));
            if(orginDateTime!=newDateTime){
                throw new BusinessException("DateTime format not correct["+dateTime+"]");
            }
        }
    
    
        /**
         * 检查日期
         * @param date 20100421
         * @throws ParseException
         */
        public static void checkDate(int date)throws BusinessException{
            long orginDate = date;
            long newDate = getNumericDate(parse(date));
            if(orginDate!=newDate){
                throw new BusinessException("Date format not correct["+date+"]");
            }
        }
    
        /**
         * 检查日期
         * @param date 20100421
         * @return true:格式正确,false:格式错误
         */
        public static boolean checkValueDate(int date){
            boolean flag=true;
            try {
                long orginDate = date;
                long newDate = getNumericDate(parse(date));
                if(orginDate!=newDate){
                    flag=false;
                }
            } catch (Exception e) {
                flag=false;
            }
            return flag;
        }
    
    
        /**
         * 检查时间
         * @param time 152622
         * @throws ParseException
         */
        public static void checkTime(int time)throws BusinessException{
            long orginTime = time;
            long newTime = getNumericTime(parse(time));
            if(orginTime!=newTime){
                throw new BusinessException("Time format not correct["+time+"]");
            }
        }
        /**
         * 根据int 结构的日期获取Calendar
         * @param date
         * @return
         */
        public static Calendar getCalendarByInt(int date){
            Calendar time=Calendar.getInstance();
            time.clear();
            time.setTime(parse(date));
            return time;
        }
        /**
         * 根据calendar 结构的日期获取int
         * @param date
         * @return
         */
        public static int getIntByCalendar(Calendar calendar){
            return getNumericDate(calendar.getTime());
        }
        // 检验日期格式 年-月- 日
        public static boolean isRightDate(int date) {
            int year = date / 10000;
            int month = (date - year * 10000) / 100;
            int day = date - year * 10000 - month * 100;
            if (year < 1900 || year > 3000) {
                return false;
            }
            if (month > 12 || month < 1) {
                return false;
            }
            if ((year % 4 == 0 || (year % 100 == 0 && year % 400 == 0)) && month == 2) {
                days[1] = 29;
            }
            if (day < 1 || day > days[month - 1]) {
                return false;
            }
            return true;
        }
        /**
         *
         * @param date
         * @param j
         * @return Date
         */
        public static int rollMonth(int date ,int j){
            int tmp = addNumericMonths(date, j - 1);
            return getMonthEnd(tmp);
        }
    
        /**
         * +月 自然月
         * @param date 起始日期
         * @param months 月数
         * @return 日期加月数后的Date日期
         * @throws ParseException
         */
        public static int addMonths(Date date, int months) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MONTH, months);
            return getNumericDate(cal.getTime());
        }
        /**
         * +月
         * @param date 起始日期
         * @param months 月数
         * @return 日期加月数后的String日期
         * @throws ParseException
         */
        public static int addMonths(int date, int months) throws ParseException {
            return addNumericMonths((date), months);
        }
        /**
         * 返回日期
         * @param date yyyy-MM-dd
         * @return Date yyyyMMdd
         * @throws ParseException
         */
        public static Date parseDate(String date) throws ParseException {
            SimpleDateFormat dateF = new SimpleDateFormat("yyyy-MM-dd");
            return dateF.parse(date);
        }
    
        /**
         * 返回时间
         * @param date 12:12:12
         * @return Date
         * @throws ParseException
         */
        public static Date parseTime(String time) throws ParseException {
            SimpleDateFormat dateF = new SimpleDateFormat("HH:mm:ss");
            return dateF.parse(time);
        }
    
        /**
         * 返回日期
         * @param date
         * @return Date yyyyMMdd
         * @throws ParseException
         */
        public static Date parseDate(int date) throws ParseException {
            SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMdd");
            return dateF.parse(String.valueOf(date));
        }
        /**
         * 返回日期的月末时间
         * @param date
         * @return Date
         */
        public static Date getMonthEnd(Date date) {
            GregorianCalendar cal = new GregorianCalendar();
            cal.setTime(date);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
            return cal.getTime();
        }
    
        public static boolean isZero(int date) {
            return date==0||date==19000101||date==19700101||parse(date).getTime() <= parse(19010101).getTime()||parse(date).getTime() <= parse(19700101).getTime();
    
        }
        /**
         * 返回两个日期相差年数
         * @param start
         * @param end
         * @return 相差年数
         * @throws ParseException
         */
        public static int yearsOf(int start, int end)throws BusinessException{
            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(parse(start));
            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(parse(end));
            return cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR) + 1;
        }
    
        /**
         * +表达式,d,w,m,y
         * @param date
         * @param exp
         * @return String类型的日期
         * @throws ParseException
         */
        public static int add(int date, String exp) throws BusinessException {
            return  add(date, exp, 1, false);
        }
    
        /**
         * 比较两个时间大小
         * @param date1
         * @param date2
         * @return true date1>=date2; false date1 < date2
         * @throws ParseException
         */
        public static boolean greatEqual(int date1, int date2)  {
            return date1 >= date2;
        }
        /**
         *
         * @param date1
         * @param date2
         * @return date1  >  date2;
         */
        public static boolean great(int date1, int date2) {
            return  date1  >  date2;
        }
        /**
         * 日期是否一致
         * @param date1
         * @param date2
         * @return
         */
        public static boolean equal(int date1,int date2){
            return  date1  ==  date2;
        }
    
        /**
         * 比较两个时间大小(无日期)
         * @param date1
         * @param date2
         * @return true date1>=date2; false date1 < date2
         * @throws ParseException
         */
        public static boolean greatTime(int date1, int date2)  {
            return  date1 >= date2;
        }
        /**
         * 比较两个时间大小
         * @param date1
         * @param date2
         * @return
         * true : date1 < date2; false : date1 >= date2
         * @throws ParseException
         */
        public static boolean less(int date1, int date2) {
            return  date1  <  date2 ;
        }
    
        /**
         * 比较表达式的大小
         * @param exp1
         * @param exp2
         * @return 表达式(折算成天)相减后的值
         */
        public static int compare(String exp1, String exp2){
            return getDays(exp1) - getDays(exp2);
        }
    
        public static int getDays(String exp) {
            int days = 0;
            try {
                int len = exp.length();
                if("ON".equals(exp)){
                    days = 0;
                }else if("TN".equals(exp)){
                    days = 1;
                }else if("SP".equals(exp)){
                    days = 2;
                }else if("SN".equals(exp)){
                    days = 3;
                }else{
                    int num = Integer.parseInt(exp.substring(0, len - 1));
                    char c = exp.charAt(len - 1);
                    if( c == 'd' || c == 'D'){
                        days = num;
                    } else if( c == 'w' || c == 'W'){
                        days = num * 7;
                    }else if( c == 'm' || c == 'M'){
                        days = num * 30;
                    }else if( c == 'y' || c == 'Y'){
                        days = num * 365;
                    }
                }
            } catch (Exception e) {
                throw new BusinessException("error.ParamTerm.paramTerm",
                        exp);
            }
            return days;
        }
        /**
         * 返回年
         * @param date
         * @return 年
         * @throws ParseException
         */
        public static int getYear(int date){
            int year=1900;
            try {
                year= getYear(parseDate(date));
            } catch (ParseException e) {
                year=getYear(parse(date));
            }
            return year;
        }
        /**
         * 返回年
         * @param date
         * @return 年
         * @throws ParseException
         */
        public static int getYear(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.YEAR);
        }
        /**
         * 返回月
         * @param date
         * @return 月
         * @throws ParseException
         */
        public static int getMonth(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            return cal.get(Calendar.MONTH)+1;
        }
     /**
      * 返回日期的年月
      * @param date
      * @return
      */
        public static int getYearMonth(int date){
            int yearMonth=190001;
            try {
                Date date1=parseDate(date);
                 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM");
                 yearMonth=Integer.valueOf( sdf.format(date1));
            } catch (ParseException e) {
                yearMonth=date/100;
            }
            return yearMonth;
        }
    
        /**
         * 获取日期week信息
         * @param date
         * @return
         */
        public static int getDayWeek(int date){
            Calendar cal=getCalendarByInt(date);
            return    cal.get(Calendar.DAY_OF_WEEK);
    
        }
    
        /**
         * 读取当前的日期+时间
         * return long 20100421132630
         */
        public static long getNumericDateTimeMill(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMddHHmmssSSS");
            String dateTime = sf.format(Calendar.getInstance().getTime());
            return Long.parseLong(dateTime);
        }
        public static long getNumericDateTime(int date,int time){
            String dateString=date+"000000";
            long datetime=Long.parseLong(dateString);
            return datetime+time;
        }
        
        /**
         * 获取 yyyyMMdd-HH:mm:ss.SSS 类型
         * @param dateTime
         * @return String 20150706-11:08:21.251
         */
        public static String getNumericDateTimeStr(){
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMdd-HH:mm:ss.SSS");
            String dateTime = sf.format(Calendar.getInstance().getTime());
            return dateTime;
        }
        /**
         * yyyyMMdd-HH:mm:ss.SSS 转换为 long 类型
         * @param dateTime
         * @return long 20100421132630333
         */
        public static long getNumericDateTime(String  dateTimeStr){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS");
            Date date = null;
            try {
                date = sdf.parse(dateTimeStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
            sf.applyPattern("yyyyMMddHHmmssSSS");
            return Long.parseLong(sf.format(date));
        }
    }
  • 相关阅读:
    《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
    《CMake实践》笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE
    《CMake实践》第三部分的示例代码的错误
    利用 autoconf 和 automake 生成 Makefile 文件
    如何安装 罗技“优联技术”无线鼠标、无线键盘?
    make 和 makefile 的关系
    编译器 cc、gcc、g++、CC 的区别
    如何撤销 PhpStorm/Clion 等 JetBrains 产品的 “Mark as Plain Text” 操作 ?
    Linux/Ubuntu tree 命令以树形结构显示文件夹目录结构
    C/C++ 静态链接库(.a) 与 动态链接库(.so)
  • 原文地址:https://www.cnblogs.com/justuntil/p/8001359.html
Copyright © 2011-2022 走看看