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” 立即领红包。