Date操作工具类
package util;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Random;public class DateUtil {/** * 将String类型的日期转成date * @param date * @return */public static Date string2Date(String date,String format){SimpleDateFormat df=new SimpleDateFormat(format);try {return df.parse(date);} catch (ParseException e) {e.printStackTrace();return null;}}/** * 计算两个日期相差天数 * @param startDate 开始日期,格式为yyyyMMdd,不能有时分秒 * @param endDate * @return */public static long dateMinus(Date startDate,Date endDate){return (endDate.getTime()-startDate.getTime())/(24*60*60*1000);}/** * 计算日期加指定天数后所得日期 * @param date 原始日期 * @param day 所加天数(负数时为减) * @return */public static Date sumDate(Date date,int day){Calendar calendar = Calendar.getInstance();calendar.setTime(date);//System.out.println(calendar.get(Calendar.DAY_OF_MONTH));// 今天的日期calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + day);// 让日期加1//System.out.println(calendar.get(Calendar.DATE));// 加1之后的日期Topreturn calendar.getTime();}/** * 计算日期减指定天数后所得日期 * @param date 原始日期 * @param day 所加天数(负数时为减) * @return */public static Date subDate(Date date,int day){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - day);// 让日期加1return calendar.getTime();}/** * 获取前一个月 * @param date * @return */public static String getPreviousMonth(Date date){Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);// 让日期加1SimpleDateFormat df=new SimpleDateFormat("yyyyMM");return df.format(calendar.getTime());}/** * 获取指定月天数 * @param month yyyyMM * @return */public static int getMonthDays(String month){ Calendar cal = new GregorianCalendar(); //或者用Calendar cal = Calendar.getInstance(); /**设置date**/ SimpleDateFormat oSdf = new SimpleDateFormat ("yyyyMM"); try { cal.setTime(oSdf.parse(month)); } catch (ParseException e) { e.printStackTrace(); } /**开始用的这个方法获取实际月的最大天数**/ int num2 = cal.getActualMaximum(Calendar.DAY_OF_MONTH);return num2;}public static String getRandomDate(int num){Random rd = new Random();String res = String.valueOf(System.currentTimeMillis());for(int i=0; i<num;i++){res = res + rd.nextInt(9);}return res;}/** * 计算date1和date2相差的秒数(date1-date2) * @param date1 * @param date2 * @return */public static long subDate(Date date1,Date date2){ long l = date1.getTime()-date2.getTime()>0 ? date1.getTime()-date2.getTime(): date2.getTime()-date1.getTime(); return l/1000;}/** * 得到当前日期前后几月的某一日期 * @param dateFormat 时间格式 * @param monthNum 1月前:-1,1月后:1 * @return */public static String getMonthTime(String dateFormat,int monthNum){Calendar currTime = GregorianCalendar.getInstance();DateFormat bdf = new SimpleDateFormat(dateFormat);currTime.add(Calendar.MONTH, monthNum);Date date = currTime.getTime(); String time = bdf.format(date); return time;}/** * 将date转成string * @param date 需转换的日期 * @param dateFormat 日期格式 如yyyy-MM-dd HH:mm:ss * @return */public static String date2String(Date date,String dateFormat){SimpleDateFormat df=new SimpleDateFormat(dateFormat);try {return df.format(date);} catch (Exception e) {e.printStackTrace();return null;}}public static void main(String[] args) {String date="201212121212120";Date date2=DateUtil.string2Date(date, "yyyyMMddHHmmssS");System.out.println(DateUtil.date2String(date2, "yyyyMMddHH:mm:ss SSS"));}}