时间工具类DateUtil

 

package com.yung.ppapi.util;

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

import org.apache.commons.lang3.StringUtils;

/**
 * 
 * @author lisheng4
 *
 */
public class DateUtil {
	
	private final static String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
	
	/**
	 * 比较开始时间和结束时间
	 * @param startDate
	 * @param endDate
	 * @param dayNum
	 * @return
	 */
	public static int compare(Date startDate, Date endDate){
		Calendar startCal = Calendar.getInstance();
		startCal.setTime(startDate);
		
		Calendar endCal = Calendar.getInstance();
		endCal.setTime(endDate);
		return startCal.compareTo(endCal);
	}
	
	/**
	 * 两个时间间隔是否大于monthNum个月
	 * @param startDate
	 * @param endDate
	 * @param monthNum
	 * @return
	 */
	public static int compareMonth(Date startDate, Date endDate, int monthNum){
		Calendar tmpCal = Calendar.getInstance();
		tmpCal.setTime(endDate);
		tmpCal.add(Calendar.MONTH, -monthNum);
		
		Calendar startCal = Calendar.getInstance();
		startCal.setTime(startDate);
		return tmpCal.compareTo(startCal);
	}
	
	/**
	 * 两个时间间隔是否大于dayNum天
	 * @param startDate
	 * @param endDate
	 * @param dayNum
	 * @return
	 */
	public static int compareDay(Date startDate, Date endDate, int dayNum){
		Calendar tmpCal = Calendar.getInstance();
		tmpCal.setTime(endDate);
		tmpCal.add(Calendar.DATE, -dayNum);
		
		Calendar startCal = Calendar.getInstance();
		startCal.setTime(startDate);
		return tmpCal.compareTo(startCal);
	}
	
	/**
	 * 获取n月之前的时间
	 * @param n
	 * @return
	 */
	public static Date getBeforeMonth(int n) {
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
        c.add(Calendar.MONTH, -n);
		return c.getTime();
	}
	
	public static String getBeforeMonth(int n , String pattern) {
		if(StringUtils.isEmpty(pattern)) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(getBeforeMonth(n));
	}
	
	/**
	 * 获取几个月之前的第几天.
	 * @param monthNum
	 * @param dayNum
	 * @param pattern
	 * @return
	 */
	public static String getBeforeMonthAddDay(int monthNum, int dayNum, String pattern) {
		if(StringUtils.isEmpty(pattern)) {
			pattern = "yyyy-MM-dd";
		}
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		Calendar c = Calendar.getInstance();
		c.setTime(getBeforeMonth(monthNum));
		c.add(Calendar.DATE, dayNum);
		return format.format(c.getTime());
	}
	
	public static String getCurrentDate(String pattern) {
		if(StringUtils.isEmpty(pattern)) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(new Date());
	}
	
	/**
	 * 获取带n位随机数的时间戳
	 * @return
	 */
	public static String getTimeStampRandom(int n) {
		if (n < 3 || n > 9) {
			n = 6;
		}
		int tmp = 1;
		for (int i = 2; i <= n; i++) {
			tmp = tmp * 10;
		}
		String timeStamp = DateUtil.format(new Date(), "yyyyMMddHHmmss");
		//思路是:math.random()范围是[0.0, 1.0),那么math.random()*9+1一定是小于10的
		int rdNum = (int) ((Math.random() * 9 + 1) * tmp);
		return timeStamp + rdNum;
	}
	
	public static String format(Date date) {
		return format(date, null);
	}
	
	public static String format(Date date, String pattern) {
		if(date == null) {
			return "";
		}
		if(StringUtils.isEmpty(pattern)) {
			pattern = DEFAULT_PATTERN;
		}
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		return df.format(date);
	}
	
	public static Date parse(String dateStr){
		return parse(dateStr, null);
	}
	
	public static Date parse(String dateStr, String pattern) {
		if(StringUtils.isEmpty(dateStr)) {
			return null;
		}
		if(StringUtils.isEmpty(pattern)) {
			pattern = DEFAULT_PATTERN;
		}
		
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		Date date = null;
		try {
			date = df.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/**
	 * 判断开始时间是否小于等于结束时间
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public static boolean validTime(String startTime, String endTime) {
		if(compare(parse(startTime),parse(endTime)) <= 0) {
			return true;
		}
		return false;
	}
	
	/**
	 * 判断时间间隔是否大于一个月
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public static boolean validTimeMoreOneMonth(String startTime, String endTime) {
		if(compareMonth(parse(startTime),parse(endTime),1) > 0) {
			return true;
		}
		return false;
	}
	
	/**
	 * 判断时间间隔是否大于7天
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public static boolean validTimeMoreSevenDay(String startTime, String endTime) {
		if(compareDay(parse(startTime),parse(endTime),7) > 0) {
			return true;
		}
		return false;
	}
	
	public static void main(String[] args) throws Exception {
//		System.out.println(validTime("2018-10-8 00:00:00","2018-11-7 23:59:59"));
//		System.out.println(validTimeMoreOneMonth("2018-10-8 00:00:00","2018-11-7 23:59:59"));
//		System.out.println(getBeforeMonthAddDay(1,1,null));
//		System.out.println(format(new Date()));
//		System.out.println(parse("2018-08-04 12:00:00"));
		
//		for(int j = 0; j< 100; j++){
//			System.out.println(getTimeStampRandom(6));
//		}
		
	}
	
}

 

楼主这么辛苦,请使用楼主的推荐码领取支付宝红包吧,记得一定要消费掉哦。双赢^_^。

1、打开支付宝首页搜索“8282987” 立即领红包。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值