po转form form转po

po转form   form转po不再使用老套的手动set值

使用如下方法即可节省工作量

使用java反射机制完成,使开发效率大步提高

package common;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

import util.DateUtil;
/**
 * po实体类和form相互转换工具类
 * 该类使用前提,form和po的属性名称需要一致,不一致不会赋值。
 *
 */
public class PoFormConverseUtil {
    
    /**
     * 根据po填充form
     * form支持的类型有,String,Long,Integer,Double,如果form上有其他特殊类型,不支持,请自行单独处理
     * 如果页面上的输入框里的值有格式要求,也请再调用此方法后再自行处理一次
     * @param po
     * @param form
     */
    public static void poToForm(Object po,Object form){
        try {
            Field[] po_fields = po.getClass().getDeclaredFields();//获得所有的属性
            Method[] po_methods = po.getClass().getDeclaredMethods();//获得所有的方法
            ArrayList<Method> po_get_methods = new ArrayList<Method>();//所有的get方法
            ArrayList<Method> po_set_methods = new ArrayList<Method>();//所有的set方法
            
            Method[] frm_methods = form.getClass().getDeclaredMethods();//获得所有的方法
            ArrayList<Method> frm_get_methods = new ArrayList<Method>();//所有的get方法
            ArrayList<Method> frm_set_methods = new ArrayList<Method>();//所有的set方法
            
            
            //循环所有的方法,区分get方法,和set方法
            for(int j = 0;j<po_methods.length;j++){
                if(po_methods[j].getName().startsWith("get")){
                    po_get_methods.add(po_methods[j]);
                }else if(po_methods[j].getName().startsWith("set")){
                    po_set_methods.add(po_methods[j]);
                }
            }
            
            
            for(Method m:frm_methods){
                if(m.getName().startsWith("get")){
                    frm_get_methods.add(m);
                }else if(m.getName().startsWith("set")){
                    frm_set_methods.add(m);
                }
            }
            
            //循环po的get方法,和form的set方法,把相同属性的po的值赋给form
            for(Method poget:po_get_methods){
                for(Method frmset:frm_set_methods){
                    if(poget.getName().substring(3).equals(frmset.getName().substring(3))){
                        Field poFieldName = po.getClass().getDeclaredField(lowerCaseFirstChar(poget.getName().substring(3)));
                        Field frmFieldName = form.getClass().getDeclaredField(lowerCaseFirstChar(frmset.getName().substring(3)));
                        String poFieldType = poFieldName.getGenericType().toString();// class java.lang.String
                        String frmFieldType = frmFieldName.getGenericType().toString();
                        String frmtemp = frmFieldType.substring(16);
                        String potemp = poFieldType.substring(16);
                        
                        
                        if(null!=poget.invoke(po)){
                            String pov = poget.invoke(po).toString();
                            if(poFieldType.equals(frmFieldType)){
                                frmset.invoke(form, poget.invoke(po));//两个对象相同的属性的类型相同呢,直接赋值
                            }else{
                                //类型不相同,则把po的属性类型变成和form的属性类型相同再赋值
                                if (StringUtil.isBlank(pov)){
                      if("String".equals(frmtemp)&&!"Date".equals(potemp)){
                                      frmset.invoke(form, String.valueOf(pov));
                                   }else if("Integer".equals(frmtemp)){
                                      frmset.invoke(form, Integer.valueOf(pov));
                                   }else if("Long".equals(frmtemp)){
                                      frmset.invoke(form, Long.valueOf(pov));
                                   }else if("Double".equals(frmtemp)){
                                      frmset.invoke(form, Double.valueOf(pov));
                                   }else if("String".equals(frmtemp)&&"Date".equals(potemp)){
                                      frmset.invoke(form, pov);
                                   }else{   continue;    }

                   } else{
                    continue;
                   }
                            }
                        }
                        
                        
                    }
                }
            }
            
            
        }  catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
    
    /**
     * 根据form填充po
     * po支持的类型有,String,Long,Integer,Double,Date 如果po有其他特殊类型,不支持,请自行单独处理
     * 如果po的值有格式要求,也请再调用此方法后再自行处理一次
     * Date类型保存格式,yyyy-MM-dd
     * @param form
     * @param po
     */
    public static void formToPo(Object form,Object po){
        try {
            Method[] po_methods = po.getClass().getDeclaredMethods();//获得所有的方法
            ArrayList<Method> po_get_methods = new ArrayList<Method>();//所有的get方法
            ArrayList<Method> po_set_methods = new ArrayList<Method>();//所有的set方法
            
            Method[] frm_methods = form.getClass().getDeclaredMethods();//获得所有的方法
            ArrayList<Method> frm_get_methods = new ArrayList<Method>();//所有的get方法
            ArrayList<Method> frm_set_methods = new ArrayList<Method>();//所有的set方法
            
            //循环所有的方法,区分get方法,和set方法
            for(int j = 0;j<po_methods.length;j++){
                //System.out.println("method "+po_methods[j].getName());
                if(po_methods[j].getName().startsWith("get")){
                    po_get_methods.add(po_methods[j]);
                }else if(po_methods[j].getName().startsWith("set")){
                    po_set_methods.add(po_methods[j]);
                }
            }
            
            for(Method m:frm_methods){
                if(m.getName().startsWith("get")){
                    frm_get_methods.add(m);
                }else if(m.getName().startsWith("set")){
                    frm_set_methods.add(m);
                }
            }
            
            //循环form的get方法,和Po的set方法,如属性名字相同,则把form的值给po
            for(Method frmget:frm_get_methods){
                for(Method poset:po_set_methods){
                    if(poset.getName().substring(3).equals(frmget.getName().substring(3))){
                        Field poFieldName = po.getClass().getDeclaredField(lowerCaseFirstChar(poset.getName().substring(3)));
                        Field frmFieldName = form.getClass().getDeclaredField(lowerCaseFirstChar(frmget.getName().substring(3)));
                        String poFieldType = poFieldName.getGenericType().toString();// 如:class java.lang.String
                        String frmFieldType = frmFieldName.getGenericType().toString();
                        String frmtemp = frmFieldType.substring(16); //如:String
                        String potemp = poFieldType.substring(16);
                        if(null!=frmget.invoke(form)){
                            String frmv = frmget.invoke(form).toString();
                            
                            if(poFieldType.equals(frmFieldType)){
                                poset.invoke(po, frmget.invoke(form));//两个对象相同的属性的类型相同呢,直接赋值
                            }else{
                                //类型不相同,则把form的属性类型变成和po的属性类型相同再赋值
                                if(StringUtil.isBlank(frmv)){
                                  if("String".equals(potemp)){
                                      poset.invoke(po, String.valueOf(frmv));
                                  }else if("Integer".equals(potemp)){
                                      poset.invoke(po, Integer.valueOf(frmv));
                                  }else if("Long".equals(potemp)){
                                      poset.invoke(po, Long.valueOf(frmv));
                                  }else if("Double".equals(potemp)){
                                      poset.invoke(po, Double.valueOf(frmv));
                                  }else if("Date".equals(potemp)){
                                      poset.invoke(po, DateUtil.convertStringToDate(frmv));
                                  }else{
                                      continue;
                                  }
                   } else {
                    continue;
                   }
} } } } } }
catch (Exception e) { e.printStackTrace(); } } //首字母大写 public static String upCaseFirstChar(String str){ char[] chars = str.toCharArray(); if (chars[0] >= 'a' && chars[0] <= 'z') { chars[0] = (char)(chars[0] - 32); } return new String(chars); } //首字母小写 public static String lowerCaseFirstChar(String str){ char[] chars = str.toCharArray(); if (chars[0] >= 'A' && chars[0] <= 'Z') { chars[0] = (char)(chars[0] + 32); } return new String(chars); } }

日期转换工具类

package util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;/**
 * 日期操作的工具类
 */
public class DateUtil {
public static String ltimePattern       = "yyyy-MM-dd HH:mm:ss";
    public static String sftimePattern      = "yyyy-MM-dd HH:mm";
    public static String defaultDatePattern = "yyyy-MM-dd";
    public static String timePattern        = "HH:mm";

    /**
     * 按照yyyy-MM-dd将日期对象转化为字符串
     * 
     * @param aDate  日期对象 {@link Date}
     * @return 按照yyyy-MM-dd将日期对象转化为字符串
     */
    public static final String getDate(Date aDate) {
        return getDateTime(defaultDatePattern, aDate);
    }

    public static String changeDate(Date aDate){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
            String dateNowStr = sdf.format(aDate);
            return dateNowStr;
    }

    
    /**
     * 按照yyyy-MM-dd HH:mm:ss将日期对象转化为字符串
     * 
     * @param aDate  日期对象 {@link Date}
     * @return 按照yyyy-MM-dd HH:mm:ss将日期对象转化为字符串
     */
    public static final String getDateTime(Date aDate) {
        return getDateTime(ltimePattern, aDate);
    }
    /**
     * 按照yyyyMMdd 将日期对象转化为字符串
     * 
     * @param aDate  日期对象 {@link Date}
     * @return 按照yyyyMMdd将日期对象转化为字符串
     */
    public static final String getDateTimeSimple(Date aDate) {
         if (aDate == null) {
             return "";
         }
        String patter  = "yyyyMMdd";
         SimpleDateFormat df = new SimpleDateFormat(patter);
        return df.format(aDate);
    }

    /**
     * 根据日期返回时间
     * 
     * 
     * @param theTime  日期对象 {@link Date}
     * @return
     */
    public static String getTimeNow(Date theTime) {
        return getDateTime(timePattern, theTime);
    }

    /**
     * 按照aMask将日期对象转化为字符串
     * 
     * @param aMask  日期格式
     * @param aDate  日期对象 {@link Date}
     * @return 将日期对象转化为字符串
     */
    public static final String getDateTime(String aMask, Date aDate) {
        if (aDate == null) {
            return "";
        }
        SimpleDateFormat df = new SimpleDateFormat(aMask);
        return df.format(aDate);
    }

    /**
     * 日期字符串按照给定的格式转换为yyyy-MM-dd日期对象
     * 
     * @param strDate yyyy-MM-dd 的字符串
     * @return yyyy-MM-dd 的日期对象
     * @throws ParseException
     */
    public static Date convertStringToDate(String strDate) throws ParseException {
        return convertStringToDate(defaultDatePattern, strDate);
    }

    /**
     * 将日期字符串按照给定的格式转换为日期对象
     * 
     * @param aMask 字符串格式
     * @param strDate 日期字符串
     * @return 日期对象日期对象
     * @throws ParseException
     */
    public static final Date convertStringToDate(String aMask, String strDate)
                                                                              throws ParseException {
        SimpleDateFormat df = new SimpleDateFormat(aMask);
        return df.parse(strDate);
    }

    /**
     * 将yyyy-MM-dd 格式的日期字符串转为 yyyy-MM-dd HH:mm:ss格式的日期
     * 时间部分补充为00:00:00,当天的开始时间
     * 
     * @param date yyyy-MM-dd的日期字符串
     * @return  yyyy-MM-dd HH:mm:ss格式的日期
     */
    public static Date getStartDatetime(String date) {
        SimpleDateFormat ddf = new SimpleDateFormat(defaultDatePattern);
        Date d = null;
        try {
            d = ddf.parse(date);
        } catch (Exception e) {
            log.error("转换时间出错:", e);
        }
        return getZero(d);
    }

    /**
     * 将yyyy-MM-dd 格式的日期字符串转为 yyyy-MM-dd hh:mm:ss格式的日期
     * 时间部分补充维23:59:59,当天的结束时间
     * 
     * @param date yyyy-MM-dd的日期字符串
     * @return  yyyy-MM-dd hh:mm:ss格式的日期
     */
    public static Date getEndDatetime(String date) {
        SimpleDateFormat tdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date cd = null;
        try {
            cd = tdf.parse(date.concat(" 23:59:59"));
        } catch (Exception e) {
            log.error("转换日期出错:", e);
        }
        return cd;
    }

    /**
     * 函数描述:得到时间区间的差集
     * 
     * @return
     */
    public static List<Date[]> getDifference(Date kDate, Date jDate, Date delkDate, Date deljDate) {
        List<Date[]> listDate = new ArrayList<Date[]>();
        Date[] date;
        //当要删除的开始时间大于原开始时间时
        if (compareDate(delkDate, kDate) == 1) {
            date = new Date[] { kDate, DateUtil.getZero(delkDate, -1) };
            listDate.add(date);
        }
        //当要删除的结束时间小于原结束时间时
        if (compareDate(deljDate, jDate) == -1) {
            date = new Date[] { jDate, DateUtil.getZero(deljDate, 1) };
            listDate.add(date);
        }

        return listDate;
    }

    /**
     * 函数描述:排序
     * 
     * @return
     */
    public static Date[][] getTaxis(Date[][] dates, boolean desc) {
        int x = 1;
        if (desc) {
            x = -1;
        }
        // 对dates排序
        for (int i = 0; i < dates.length; i++) {
            int k = i;
            for (int j = i + 1; j < dates.length; j++) {
                if (compareDate(dates[k][1], dates[j][1]) == x) {
                    k = j;
                }
            }
            if (k != i) {
                Date tempk = dates[k][0];
                Date tempj = dates[k][1];
                dates[k][0] = dates[i][0];
                dates[k][1] = dates[i][1];
                dates[i][0] = tempk;
                dates[i][1] = tempj;
            }

        }
        return dates;
    }

    /**
     * 函数描述:得到时间区间的天数
     * 
     * @return
     */
    public static int getDays(Date kDate, Date jDate) {
        return (int) ((jDate.getTime() - kDate.getTime()) / (1000 * 60 * 60 * 24));
    }

    /**
     * 函数描述:得到时间区间数组的交集
     * 
     * @return 返回时间区间交集,没前交集返回null
     */
    public static Date[] getIntersection(Date kDate, Date jDate, Date kDate2, Date jDate2) {
        if (kDate.after(jDate2))//开始时间1在结束时间2之后,那么没有交集
            return null;
        if (jDate.before(kDate2))//结束时间1在开始时间2之后,那么没有交集
            return null;

        if (kDate.after(kDate2))//如果开始时间1在开始时间2之后,
        {
            if (jDate.before(jDate2))//检查结束时间1同结束结束时间2比较的结果
            {
                return getIntersection(kDate, jDate);
            } else {
                return getIntersection(kDate, jDate2);
            }
        } else {
            if (jDate.before(jDate2))//检查结束时间1同结束结束时间2比较的结果
            {
                return getIntersection(kDate2, jDate);
            } else {
                return getIntersection(kDate2, jDate2);
            }

        }
    }

    /**
     * 函数描述:得到时间区间数组的交集
     * 
     * @return
     */
    private static Date[] getIntersection(Date start, Date end) {
        Date result[] = new Date[2];
        result[0] = start;
        result[1] = end;
        return result;
    }

    /**
     * 函数描述:得到时间区间数组的差集
     * 
     * @return
     */
    public static Date[][] getDifferences(Date[][] dates, Date[][] delDates) {
        List<Date[]> listDate = new ArrayList<Date[]>();
        Date[][] outDate;
        delDates = getTaxis(delDates, false);// 对delDates排序

        for (int j = 0; j < dates.length; j++) {
            for (int i = 0; i < delDates.length; i++) {

                // 当要删除的区间和原区间有交集的时候
                if ((compareDate(delDates[i][1], dates[j][0]) >= 0 && compareDate(delDates[i][1],
                    dates[j][1]) <= 0)
                    || (compareDate(delDates[i][0], dates[j][0]) >= 0 && compareDate(
                        delDates[i][0], dates[j][1]) <= 0)) {
                    listDate.addAll(getDifference(dates[i][0], dates[i][1], delDates[i][0],
                        delDates[i][1]));

                }
                //当原时间的结束时间小于删除时间的结束时间时
                if (compareDate(dates[j][1], delDates[i][1]) <= 0) {
                    break;
                }
            }
        }
        outDate = new Date[listDate.size()][2];
        int n = 0;
        for (Date[] date : listDate) {
            outDate[n][0] = date[0];
            outDate[n][1] = date[1];
            n++;
        }
        return outDate;
    }

    /**
     * 函数描述:比较日期
     *  
     * @param date1  日期1
     * @param date2  日期2
     * @return  当date1大时返回 1 当相等时返回0  其他为-1
     */
    public static int compareDate(Date date1, Date date2) {
        if (date1 == null && date2 != null) {
            return -1;
        } else if (date1 != null && date2 == null) {
            return 1;
        } else if (date1 == null && date2 == null) {
            return 0;
        }
        int outInt = 0;
        if (date1.after(date2)) {
            outInt = 1;
        }
        if (date1.before(date2)) {
            outInt = -1;
        }
        return outInt;
    }

    /**
     * 函数描述:将给定日期的时分秒清零
     * @param date    指定的日期
     * @return
     */
    public static Date getZero(Date date) {
        return getZero(date, 0);
    }

    /**
     * 函数描述:将给定日期增减(N)天后的时分秒清零
     * 
     * @param date 指定日期
     * @param days    增减的天数
     * @return
     */
    public static Date getZero(Date date, int days) {
        if (date == null) {
            return null;
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);//天数+n
        calendar.set(Calendar.HOUR_OF_DAY, 0);//小时置0
        calendar.set(Calendar.MINUTE, 0);//分钟置0
        calendar.set(Calendar.SECOND, 0);//秒置0
        calendar.set(Calendar.MILLISECOND, 0);//毫秒置0
        Date newDate = calendar.getTime();//得到新的date对象.
        return newDate;
    }

    /**
     * 函数描述:将给定日期增减(N)天后的时分秒清零
     * 
     * @param date 指定日期
     * @param days    增减的天数
     * @return
     */
    public static Date getZero(Date date, int years, int months, int days) {
        if (date == null) {
            return null;
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, years);//年数+n
        calendar.add(Calendar.MONTH, months);//月数+n
        calendar.add(Calendar.DATE, days);//天数+n
        calendar.set(Calendar.HOUR_OF_DAY, 0);//小时置0
        calendar.set(Calendar.MINUTE, 0);//分钟置0
        calendar.set(Calendar.SECOND, 0);//秒置0
        calendar.set(Calendar.MILLISECOND, 0);//毫秒置0
        Date newDate = calendar.getTime();//得到新的date对象.
        return newDate;
    }

    /**
     * 将日期+frequency天
     * @param date YYYY-mm-DD 格式的字符串
     * @param frequency 天数
     * @return
     */
    public static String getNextDate(String date, int frequency) {
        SimpleDateFormat ddf = new SimpleDateFormat(defaultDatePattern);
        Date d = null;
        try {
            d = ddf.parse(date);
        } catch (Exception e) {
        }
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        c.add(Calendar.DAY_OF_MONTH, frequency);
        return ddf.format(c.getTime());
    }

    /**
     * 根据某个日期和频次得到下次执行日期
     * 上次创建日期为NULL时,返回明天日期
     * @param lastTime
     * @param frequency
     * @return
     */
    public static Date getNextTime(Date lastTime, Integer frequency) {
        Calendar lastCal = Calendar.getInstance();
        Calendar c = Calendar.getInstance();
        int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        int eachDay = maxDay / frequency;
        if (lastTime != null) {//如果有最后执行时间,设置此时间为起点,并向后延迟eachDay多天
            lastCal.setTime(lastTime);
            lastCal.add(Calendar.DAY_OF_MONTH, eachDay);
        } else {//返回第二天
            lastCal.add(Calendar.DAY_OF_MONTH, 1);
        }
        if (lastCal.get(Calendar.MONTH) != c.get(Calendar.MONTH)) {
            lastCal.set(Calendar.DATE, 1);
        }
        return lastCal.getTime();
    }

    /**
     * 获得当前季度(数字)
     * @return
     */
    public static int getCurQuarter() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new java.util.Date());
        int month = calendar.get(Calendar.MONTH) + 1; //获得当前月份
        int quarter = 0;
        if (month >= 1 && month <= 3) {
            quarter = 1;
        }
        if (month >= 4 && month <= 6) {
            quarter = 2;
        }
        if (month >= 7 && month <= 9) {
            quarter = 3;
        }
        if (month >= 10 && month <= 12) {
            quarter = 4;
        }
        return quarter;
    }

    /**
     * 
     * 函数介绍:获取两个日期时间差
    
     * 输入参数:
    
     * 返回值:
     */
    public static String getTwoDateMinue(String starttime, String endtime) {
        String dateStr = "";
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Date date = df.parse(starttime);
            Date now = df.parse(endtime);
            long l = now.getTime() - date.getTime();
            long day = l / (24 * 60 * 60 * 1000);
            long hour = (l / (60 * 60 * 1000) - day * 24);
            long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
            if(day>0){
                dateStr += day+"天";
            }
            if(hour>0){
                dateStr += hour + "小时";
            }
            if(min>0){
                dateStr += min + "分钟";
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return StringUtils.isBlank(dateStr)?"0分钟":dateStr;
    }
    
    /**
     * 获取下月1号
     * @param date
     * @return
     */
    public static Date getNextMonth(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date); 
        calendar.add(Calendar.MONTH, 1);
        
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        
        return calendar.getTime();
    }
    
    /**
     * 获取某年月的天数
     * @param year
     * @param month
     * @return
     */
    public static int getDays(int year, int month){
        int days = 0;
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        return days;
    }
    
    public static void main(String[] args){
        System.out.println(getTwoDateMinue("2015-05-05 14:50","2016-06-05 17:04"));
    }
    
    /**
     * 获取上个月的日期 
     * <br>如2015-03-03的上月是2015-02-03
     * @param date 格式为2015-03-03的日期
     * @return
     */
    public static String getPreDate(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String d = sdf.format(date);
        String[] arr = d.split("-");
        int year = Integer.parseInt(arr[0]); //获取当前日期的年份
        int month = Integer.parseInt(arr[1]); //获取当前日期的月份
        int day = Integer.parseInt(arr[2]); //获取当前日期的日
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date);
        int year2 = year;
        int month2 = month - 1;
        if (month2 == 0) {
            year2 = year2 - 1;
            month2 = 12;
        }
        int day2 = day;
        
        Calendar c2 = Calendar.getInstance();
        c2.add(Calendar.YEAR, year2);
        c2.add(Calendar.MONTH, month2);
        int days2 = c2.get(Calendar.DAY_OF_MONTH);
        if (day2 > days2) {
            day2 = days2;
        }
        String m2 = "";
        if (month2 < 10) {
            m2 = '0' + String.valueOf(month2);
        }
        String t2 = String.valueOf(year2) + '-' + m2 + '-' + String.valueOf(day2);
        return t2;
    }
    
    public static String plusDay(int num,String canshudate) throws Exception {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 日期格式
        Date date = dateFormat.parse(canshudate); // 指定日期
        Date newDate = addDate(date, num); // 指定日期加上num天
        System.out.println(dateFormat.format(date));// 输出格式化后的日期
        System.out.println(dateFormat.format(newDate));
        return dateFormat.format(newDate);
    }
    
    
    public static Date addDate(Date date,long day) throws ParseException {
         long time = date.getTime(); // 得到指定日期的毫秒数
         day = day*24*60*60*1000; // 要加上的天数转换成毫秒数
         time+=day; // 相加得到新的毫秒数
         return new Date(time); // 将毫秒数转换成日期
        }
    
    /**
    * 字符串转换成日期
    * @param str
    * @return date
    */
    public static Date StrToDate(String str) {
      
       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date date = null;
       try {
        date = format.parse(str);
       } catch (ParseException e) {
        e.printStackTrace();
       }
       return date;
    }
    
     /**
     * 根据当前日期获取星期几
     * @param date
     * @return
     */

    public static String getWeekOfDate(Date date) {
        String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return weekDays[w];
    }
    
    /**
     * 按照aMask将日期对象规范化
     * 
     * @param aDate  日期对象 {@link Date}
     * @return 按照aMask将日期对象转化为字符串
     */
    public static final Date getDateSdf(String aMask,Date aDate) {
        try {
            String dateStr = getDateTime(aMask, aDate);
            return convertStringToDate(aMask, dateStr);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 将日期对象转化为yyyy-MM-dd HH:mm格式的字符串
     * 
     * @param aDate  日期对象 {@link Date}
     * @return 将日期对象转化为yyyy-MM-dd HH:mm格式的字符串
     */
    public static final String getDateSFTime(Date aDate) {
        return getDateTime(sftimePattern, aDate);
    }
    
    /**
     * 获取当前年份
     * @return
     */
    public static String getSysYear(){
        Calendar date = Calendar.getInstance();
        String year = String.valueOf(date.get(Calendar.YEAR));
        return year;
    }
    
    /**
     * 获取当前月
     * @return
     */
    public static String getSysMonth(){
        Calendar date = Calendar.getInstance();
        String month = String.valueOf(date.get(Calendar.MONTH) + 1);
        return month;
    }
}

 

转载于:https://www.cnblogs.com/y-bobo/p/10083909.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值