时间处理函数工具冯封装 上手即用

package com.sitech.pos.smartcitypayposcenter.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.security.SecureRandom;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

@Slf4j
public class DateUtil {

public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD_PATTERN = "yyyy-MM-dd";
public static final String YYYY_MM_PATTERN = "yyyy-MM";
public static final String YYYYMMDDHHMMSS_PATTERN = "yyyyMMddHHmmss";
public static final String yyyyMMddhhmmssSSS="yyyyMMddhhmmssSSS";
public static final String yyyyMMdd="yyyyMMdd";
public static final String YYYY_MM = "yyyy-MM";

public static String getDate(String interval, Date starttime, String pattern) {
	Calendar temp = Calendar.getInstance(TimeZone.getDefault());
	temp.setTime(starttime);
	temp.add(Calendar.MONTH, Integer.parseInt(interval));
	SimpleDateFormat sdf = new SimpleDateFormat(pattern);
	return sdf.format(temp.getTime());
}
/**
 * 将当前日期date - days 进行计算,返回计算后日期
 * @return
 */
public static String getBeforeDate(Date date,int days){
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
	Calendar calendar = Calendar.getInstance();   
	calendar.setTime(date);
	calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) - days);
	return df.format(calendar.getTime());
}
/**
 * 将当前日期date + days 进行计算,返回计算后日期
 * @return
 */
public static String getAfterDate(Date date,int days){
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
	Calendar calendar = Calendar.getInstance();   
	calendar.setTime(date);
	calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + days);
	return df.format(calendar.getTime());
}

/**
 * 获取几年之后的日期
 * @param date
 * @param years
 * @return
 */
public static Date getAfterYear(Date date,int years, int hourOfDay, int minute, int second){
	Calendar calendar = Calendar.getInstance();
	calendar.setTime(date);
	calendar.add(Calendar.YEAR, years);
	calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), hourOfDay, minute, second);
	return calendar.getTime();
}

/**
 * 获取天之后的日期
 * @param date
 * @param days
 * @return
 */
public static Date getAfterDay(Date date, int days, int hourOfDay, int minute, int second) {
	Calendar calendar = Calendar.getInstance();
	calendar.setTime(date);
	calendar.add(Calendar.DAY_OF_YEAR, days);
	calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), hourOfDay, minute, second);
	return calendar.getTime();
}

/**
 * 将传入的时间time - hour 进行计算,返回计算后时间
 * @return
 */
public static String getBeforeTime(Date date,int hour){
	SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
	Calendar calendar = Calendar.getInstance();   
	calendar.setTime(date);
	calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY) - hour);
	return df.format(calendar.getTime());
}

/**
 * 将字符串类型转换为时间类型
 * 
 * @return
 */
public static Date str2Date(String str) {
	Date d = null;
	if(StringUtils.isEmpty(str))return null;
	SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
	try {			
		d = sdf.parse(str);
	} catch (Exception e) {
		e.printStackTrace();
		d = null;
		return d;
	}
	return d;
}

public static Date str2Date(String str, String pattern) {
	Date d = null;
	SimpleDateFormat sdf = new SimpleDateFormat(pattern);
	try {
		d = sdf.parse(str);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return d;
}

/**
 * 将时间格式化
 * 
 * @return
 */
public static Date DatePattern(Date date) {
	SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
	try {
		String dd = sdf.format(date);
		date = str2Date(dd);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return date;
}

/**
 * 将时间格式化
 */
public static Date DatePattern(Date date, String pattern) {
	SimpleDateFormat sdf = new SimpleDateFormat(pattern);
	try {
		String dd = sdf.format(date);
		date = str2Date(dd, pattern);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return date;
}

public static String date2Str(Date date) {
	if(date==null)return "";
	SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
	return sdf.format(date);
}

public static String date2Str(Date date, String format) {
	if(date==null)return "";
	SimpleDateFormat sdf = new SimpleDateFormat(format);
	return sdf.format(date);
}

/**
 * 获取昨天
 * 
 * @param date
 * @return
 * @throws Exception
 */
public static Date getLastDate(Date date) {
	Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
	calendar.setTime(date);

	calendar.add(Calendar.DATE, -1);

	return str2Date(date2Str(calendar.getTime()));
}

/**
 * 获取上周第一天(周一)
 * 
 * @param date
 * @return
 * @throws Exception
 */
public static Date getLastWeekStart(Date date) {
	Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
	calendar.setTime(date);
	int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
	int startnum = 0;
	if (i == 0) {
		startnum = 7 + 6;
	} else {
		startnum = 7 + i - 1;
	}
	calendar.add(Calendar.DATE, -startnum);

	return str2Date(date2Str(calendar.getTime()));
}

/**
 * 获取上周最后一天(周末)
 * 
 * @param date
 * @return
 * @throws Exception
 */
public static Date getLastWeekEnd(Date date) {
	Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
	calendar.setTime(date);
	int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
	int endnum = 0;
	if (i == 0) {
		endnum = 7;
	} else {
		endnum = i;
	}
	calendar.add(Calendar.DATE, -(endnum - 1));

	return str2Date(date2Str(calendar.getTime()));
}

/**
 * 改更现在时间
 */
public static Date changeDate(String type, int value) {
	Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
	if (type.equals("month")) {
		calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + value);
	} else if (type.equals("date")) {
		calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + value);
	}
	return calendar.getTime();
}

/**
 * 更改时间
 */
public static Date changeDate(Date date, String type, int value) {
	if (date != null) {
		// Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		// Calendar calendar = Calendar.
		if (type.equals("month")) {
			calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + value);
		} else if (type.equals("date")) {
			calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + value);
		} else if (type.endsWith("year")) {
			calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + value);
		}
		return calendar.getTime();
	}
	return null;
}

/**
 * haoxw 比较时间是否在这两个时间点之间
 * 
 * @param time1
 * @param time2
 * @return
 */
public static boolean checkTime(String time1, String time2) {
	Calendar calendar = Calendar.getInstance();
	Date date1 = calendar.getTime();
	Date date11 = DateUtil.str2Date(DateUtil.date2Str(date1, "yyyy-MM-dd") + " " + time1);// 起始时间

	Calendar c = Calendar.getInstance();
	c.add(Calendar.DATE, 1);
	Date date2 = c.getTime();
	Date date22 = DateUtil.str2Date(DateUtil.date2Str(date2, "yyyy-MM-dd") + " " + time2);// 终止时间

	Calendar scalendar = Calendar.getInstance();
	scalendar.setTime(date11);// 起始时间

	Calendar ecalendar = Calendar.getInstance();
	ecalendar.setTime(date22);// 终止时间

	Calendar calendarnow = Calendar.getInstance();
	if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {
		return true;
	} else {
		return false;
	}
}


public static boolean checkDate(String date1, String date2) {

	Date date11 = DateUtil.str2Date(date1, "yyyy-MM-dd HH:mm:ss");// 起始时间

	Date date22 = DateUtil.str2Date(date2, "yyyy-MM-dd HH:mm:ss");// 终止时间

	Calendar scalendar = Calendar.getInstance();
	scalendar.setTime(date11);// 起始时间

	Calendar ecalendar = Calendar.getInstance();
	ecalendar.setTime(date22);// 终止时间

	Calendar calendarnow = Calendar.getInstance();

	if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {
		return true;
	} else {
		return false;
	}
}


public static boolean checkDate(Date date1, Date date2) {


	Calendar scalendar = Calendar.getInstance();
	scalendar.setTime(date1);// 起始时间

	Calendar ecalendar = Calendar.getInstance();
	ecalendar.setTime(date2);// 终止时间

	Calendar calendarnow = Calendar.getInstance();



	if (calendarnow.after(scalendar) && calendarnow.before(ecalendar)) {
		return true;
	} else {
		return false;
	}
}

/**
 * 获取interval天之前的日期
 * 
 * @param interval
 * @param starttime
 * @param pattern
 * @return
 */
public static Date getIntervalDate(String interval, Date starttime, String pattern) {
	Calendar temp = Calendar.getInstance();
	temp.setTime(starttime);
	temp.add(Calendar.DATE, Integer.parseInt(interval));
	SimpleDateFormat sdf = new SimpleDateFormat(pattern);
	String shijian = sdf.format(temp.getTime());
	return str2Date(shijian);
}

/**
 * 当前时间(字符串格式:yyyy-MM-dd HH:mm:ss)
 * 
 * @return
 */
public static String currentTime() {
	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	return sf.format(new Date());
}

/**
 * 当前时间(字符串格式:yyyy-MM-dd HH:mm:ss)
 * @param format<String>
 * @return
 */
public static String currentTime(String format) {
	SimpleDateFormat sf = new SimpleDateFormat("".equals(format)?DEFAULT_PATTERN:format);
	return sf.format(new Date());
}
public static String currentTimeRadom() {
	SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
    int result = 0;
    SecureRandom rand=new SecureRandom();
    result = rand.nextInt(999999);
	return sf.format(new Date())+"000000".substring((result+"").length())+result;
}

/**
 * 获得当前时间(Date)
 * 
 * @return
 */
public static Date currentDate() {
	Calendar calendar = Calendar.getInstance();
	return calendar.getTime();
}

/**
 * 计算两个日期之间相差的天数
 * 
 * @param smdate
 *            较小的时间
 * @param bdate
 *            较大的时间
 * @return 相差天数
 * @throws ParseException
 */
public static int daysBetween(Date smdate, Date bdate) {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	try {
		smdate = sdf.parse(sdf.format(smdate));
		bdate = sdf.parse(sdf.format(bdate));
	} catch (ParseException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	Calendar cal = Calendar.getInstance();
	cal.setTime(smdate);
	long time1 = cal.getTimeInMillis();
	cal.setTime(bdate);
	long time2 = cal.getTimeInMillis();
	long between_days = (time2 - time1) / (1000 * 3600 * 24);

	return Integer.parseInt(String.valueOf(between_days));
}

/**
 * 跟进毫秒数值生成对应的时间格式字符串
 * @param miliSeconds
 * @param pattern
 * @return
 */
public static String formatDate(long miliSeconds,String pattern) {
  Calendar cal = Calendar.getInstance();
  cal.setTimeInMillis(miliSeconds);
  return date2Str(cal.getTime(), pattern);
}
public static String date2Strs(Date date) {
	if(date==null)return "";
	SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMdd);
	return sdf.format(date);
}
public static String getBeforeTimeMinute(Date date,int MINUTE){
	SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
	Calendar calendar = Calendar.getInstance();   
	calendar.setTime(date);
	calendar.set(Calendar.MINUTE,calendar.get(Calendar.MINUTE) - MINUTE);
	return df.format(calendar.getTime());
}

/** 
 * 获取上一个月 
 *  
 * @return 
 */  
public static String getLastMonth() {  
    Calendar cal = Calendar.getInstance();  
    cal.add(cal.MONTH, -1);  
    SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
    String lastMonth = dft.format(cal.getTime());  
    return lastMonth;  
}

/**
 * 获取上几个月
 *
 * @return
 */
public static String getBeforeMonth(Date currentMonth, int month) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(currentMonth);
    cal.add(Calendar.MONTH, -month);
    SimpleDateFormat dft = new SimpleDateFormat(YYYY_MM_PATTERN);
	return dft.format(cal.getTime());
}

/** 
 *  
 * 描述:获取下一个月. 
 *  
 * @return 
 */  
public static String getPreMonth() {  
    Calendar cal = Calendar.getInstance();  
    cal.add(cal.MONTH, 1);  
    SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
    String preMonth = dft.format(cal.getTime());  
    return preMonth;  
}  
/** 
 * 获取当前时间 
 *  
 * @param
 */  
public static String getNowTime() {  
    Calendar cal = Calendar.getInstance();  
    SimpleDateFormat dft = new SimpleDateFormat("yyyyMM");  
    String lastMonth = dft.format(cal.getTime());  
    return lastMonth;  
}


/**
 * 获取当前时间到明日0点的秒数
 * @return
 */
public static long getTomorrowZeroSeconds() {
	long current = System.currentTimeMillis();
	Calendar calendar = Calendar.getInstance();
	calendar.add(Calendar.DAY_OF_MONTH, 1);
	calendar.set(Calendar.HOUR_OF_DAY, 0);
	calendar.set(Calendar.MINUTE, 0);
	calendar.set(Calendar.SECOND, 0);
	calendar.set(Calendar.MILLISECOND, 0);
	long tomorrowZero = calendar.getTimeInMillis();
	return (tomorrowZero- current) / 1000;
}

/*时间比大小*/
public static int timeCompare(String t1,String t2) {
	SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_PATTERN);
	Calendar c1 = Calendar.getInstance();
	Calendar c2 = Calendar.getInstance();
	try {
		c1.setTime(formatter.parse(t1));
		c2.setTime(formatter.parse(t2));
	} catch (ParseException e) {
		e.printStackTrace();
	}
	return c1.compareTo(c2);
}


public static void main(String arf[]) {
	/*String time1 ="23:30:00";
	String time2 ="23:59:59";
	String time3 = "00:00:00";
	String time4 = "02:30:00";
	

	String time = currentTimeRadom();
	System.out.print(time);*/
	//System.out.println(getBeforeTimeMinute(new Date(), 30));

// System.out.println(getNowTime());
//
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(new Date());
// calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY) + 2);
// System.out.println(calendar.getTime());
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值