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之后的日期Top
		return 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);// 让日期加1
		return 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);// 让日期加1
		SimpleDateFormat 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 S
	 * @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;
		}
	}
/**
	 * 取指定月份最后一天
	 * 
	 * @param year
	 * @param month
	 * @return
	 */
	public static String getLastDayOfMonth(int year, int month) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month + 1);
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
		return new SimpleDateFormat("yyyy-MM-dd ").format(cal.getTime());
	}

	/**
	 * 取指定月份的第一天
	 * 
	 * @param year
	 * @param month
	 * @return
	 */
	public static String getFirstDayOfMonth(int year, int month) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month + 1);
		cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
		return new SimpleDateFormat("yyyy-MM-dd ").format(cal.getTime());
	}

	/**
	 * 指定日志是否该月最后一天
	 * 
	 * @param date
	 * @return
	 */
	public static boolean isLastDayOfMonth(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal.get(Calendar.DAY_OF_MONTH) == cal.getActualMaximum(Calendar.DATE);
	}
	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"));
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值