JAVA-时间类型的工具类

import java.sql.Timestamp;
import java.util.*;

public class DateProUtil {
	
	public static void main(String[] args) {
//		System.out.println("当天开始时间:"+getDayBegin());
//		System.out.println("当天结束时间:"+getDayBegin());
//		System.out.println("昨天的开始时间:"+getBeginDayOfYesterday());
//		System.out.println("昨天的结束时间:"+getBeginDayOfYesterday());
//		System.out.println("明天的开始时间"+getBeginDayOfTomorrow());
//		System.out.println("明天的结束时间:"+getEndDayOfTomorrow());
//		System.out.println("昨天的结束时间:"+getBeginDayOfYesterday());
//		System.out.println("本周的开始时间:"+getBeginDayOfWeek());
//		System.out.println("本周的结束时间:"+getEndDayOfWeek());
//		System.out.println("上周的开始时间:"+getBeginDayOfLastWeek());
//		System.out.println("上周的结束时间:"+getEndDayOfLastWeek());
		System.out.println("本月的开始时间:"+getBeginDayOfMonth());
		System.out.println("本月的结束时间:"+getEndDayOfMonth());
		System.out.println("上月开始的时间:"+getBeginDayOfLastMonth());
		System.out.println("上月结束的时间:"+getEndDayOfLastMonth());
		System.out.println("下月开始的时间:"+getBeginDayOfNextMonth());
		System.out.println("下月结束的时间:"+getEndDayOfNextMonth());
		System.out.println("本年的开始时间"+getBeginDayOfYear());
		System.out.println("本年的结束时间"+getEndDayOfYear());
		System.out.println("某个日期的开始时间:"+getDayStartTime(new Date()));
		System.out.println("某个日期的结束时间:"+getDayEndTime(new Date()));
		System.out.println("今年是哪一年:"+getNowYear());
		System.out.println("本月是哪一月:"+getNowMonth());
		System.out.println("两个日期相减得到的天数"+getDiffDays(new Date(), new Date()));
		System.out.println("上月开始的时间:"+getBeginDayOfLastMonth());
		System.out.println("上月开始的时间:"+getBeginDayOfLastMonth());
		System.out.println("上月开始的时间:"+getBeginDayOfLastMonth());
		System.out.println("上月开始的时间:"+getBeginDayOfLastMonth());
	}
	
	/**
	 * 获取当天的开始时间
	 * @return
	 */
	public static Date getDayBegin() {
		Calendar cal = new GregorianCalendar();
		cal.set(Calendar.HOUR_OF_DAY, 0);
		cal.set(Calendar.MINUTE, 0);
		cal.set(Calendar.SECOND, 0);
		cal.set(Calendar.MILLISECOND, 0);
		return cal.getTime();
	}

	/**
	 * 获取当天的结束时间
	 * @return
	 */
	public static Date getDayEnd() {
		Calendar cal = new GregorianCalendar();
		cal.set(Calendar.HOUR_OF_DAY, 23);
		cal.set(Calendar.MINUTE, 59);
		cal.set(Calendar.SECOND, 59);
		return cal.getTime();
	}

	/**
	 * 获取昨天的开始时间
	 * @return
	 */
	public static Date getBeginDayOfYesterday() {
		Calendar cal = new GregorianCalendar();
		cal.setTime(getDayBegin());
		cal.add(Calendar.DAY_OF_MONTH, -1);
		return cal.getTime();
	}

	/**
	 * 获取昨天的结束时间
	 * @return
	 */
	public static Date getEndDayOfYesterDay() {
		Calendar cal = new GregorianCalendar();
		cal.setTime(getDayEnd());
		cal.add(Calendar.DAY_OF_MONTH, -1);
		return cal.getTime();
	}

	/**
	 * 获取明天的开始时间
	 * @return
	 */
	public static Date getBeginDayOfTomorrow() {
		Calendar cal = new GregorianCalendar();
		cal.setTime(getDayBegin());
		cal.add(Calendar.DAY_OF_MONTH, 1);
		return cal.getTime();
	}

	/**
	 * 获取明天的结束时间
	 * @return
	 */
	public static Date getEndDayOfTomorrow() {
		Calendar cal = new GregorianCalendar();
		cal.setTime(getDayEnd());
		cal.add(Calendar.DAY_OF_MONTH, 1);
		return cal.getTime();
	}

	/**
	 * 获取本周的开始时间
	 * @return
	 */
	@SuppressWarnings("unused")
	public static Date getBeginDayOfWeek() {
		Date date = new Date();
		if (date == null) {
			return null;
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
		if (dayofweek == 1) {
			dayofweek += 7;
		}
		cal.add(Calendar.DATE, 2 - dayofweek);
		return getDayStartTime(cal.getTime());
	}

	/**
	 * 获取本周的结束时间
	 * @return
	 */
	public static Date getEndDayOfWeek() {
		Calendar cal = Calendar.getInstance();
		cal.setTime(getBeginDayOfWeek());
		cal.add(Calendar.DAY_OF_WEEK, 6);
		Date weekEndSta = cal.getTime();
		return getDayEndTime(weekEndSta);
	}

	/**
	 * 获取上周的开始时间
	 * @return
	 */
	@SuppressWarnings("unused")
	public static Date getBeginDayOfLastWeek() {
		Date date = new Date();
		if (date == null) {
			return null;
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
		if (dayofweek == 1) {
			dayofweek += 7;
		}
		cal.add(Calendar.DATE, 2 - dayofweek - 7);
		return getDayStartTime(cal.getTime());
	}

	/**
	 * 获取上周的结束时间
	 * @return
	 */
	public static Date getEndDayOfLastWeek() {
		Calendar cal = Calendar.getInstance();
		cal.setTime(getBeginDayOfLastWeek());
		cal.add(Calendar.DAY_OF_WEEK, 6);
		Date weekEndSta = cal.getTime();
		return getDayEndTime(weekEndSta);
	}
	
	/**
	 * 获取下周的开始时间
	 * 
	 * @return
	 */
	@SuppressWarnings("unused")
	public static Date getBeginDayOfNextWeek() {
		Date date = new Date();
		if (date == null) {
			return null;
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
		if (dayofweek == 1) {
			dayofweek += 7;
		}
		cal.add(Calendar.DATE, 2 - dayofweek + 7);
		return getDayStartTime(cal.getTime());
	}

	/**
	 * 获取下周的结束时间
	 * 
	 * @return
	 */
	public static Date getEndDayOfNextWeek() {
		Calendar cal = Calendar.getInstance();
		cal.setTime(getBeginDayOfNextWeek());
		cal.add(Calendar.DAY_OF_WEEK, 6);
		Date weekEndSta = cal.getTime();
		return getDayEndTime(weekEndSta);
	}

	/**
	 * 获取本月的开始时间
	 * @return
	 */
	public static Date getBeginDayOfMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth() - 1, 1);
		return getDayStartTime(calendar.getTime());
	}

	/**
	 * 获取本月的结束时间
	 * @return
	 */
	public static Date getEndDayOfMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth() - 1, 1);
		int day = calendar.getActualMaximum(5);
		calendar.set(getNowYear(), getNowMonth() - 1, day);
		return getDayEndTime(calendar.getTime());
	}

	/**
	 * 获取上月的开始时间
	 * @return
	 */
	public static Date getBeginDayOfLastMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth() - 2, 1);
		return getDayStartTime(calendar.getTime());
	}

	/**
	 * 获取上月的结束时间
	 * @return
	 */
	public static Date getEndDayOfLastMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth() - 2, 1);
		int day = calendar.getActualMaximum(5);
		calendar.set(getNowYear(), getNowMonth() - 2, day);
		return getDayEndTime(calendar.getTime());
	}

	/**
	 * 获取下月的开始时间
	 * @return
	 */
	public static Date getBeginDayOfNextMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth(), 1);
		return getDayStartTime(calendar.getTime());
	}

	/**
	 * 获取下月的结束时间
	 * @return
	 */
	public static Date getEndDayOfNextMonth() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(getNowYear(), getNowMonth(), 1);
		int day = calendar.getActualMaximum(5);
		calendar.set(getNowYear(), getNowMonth(), day);
		return getDayEndTime(calendar.getTime());
	}

	/**
	 * 获取本年的开始时间
	 * @return
	 */
	public static Date getBeginDayOfYear() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, getNowYear());
		cal.set(Calendar.MONTH, Calendar.JANUARY);
		cal.set(Calendar.DATE, 1);
		return getDayStartTime(cal.getTime());
	}

	/**
	 * 获取本年的结束时间
	 * @return
	 */
	public static Date getEndDayOfYear() {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, getNowYear());
		cal.set(Calendar.MONTH, Calendar.DECEMBER);
		cal.set(Calendar.DATE, 31);
		return getDayEndTime(cal.getTime());
	}

	/**
	 * 获取某个日期的开始时间
	 * @param d
	 * @return
	 */
	public static Timestamp getDayStartTime(Date d) {
		Calendar calendar = Calendar.getInstance();
		if (null != d)
			calendar.setTime(d);
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0,
				0, 0);
		calendar.set(Calendar.MILLISECOND, 0);
		return new Timestamp(calendar.getTimeInMillis());
	}

	/**
	 * 获取某个日期的结束时间
	 * @param d
	 * @return
	 */
	public static Timestamp getDayEndTime(Date d) {
		Calendar calendar = Calendar.getInstance();
		if (null != d)
			calendar.setTime(d);
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23,
				59, 59);
		calendar.set(Calendar.MILLISECOND, 999);
		return new Timestamp(calendar.getTimeInMillis());
	}

	/**
	 * 获取今年是哪一年
	 * @return
	 */
	public static Integer getNowYear() {
		Date date = new Date();
		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
		gc.setTime(date);
		return Integer.valueOf(gc.get(1));
	}

	/**
	 * 获取本月是哪一月
	 * @return
	 */
	public static int getNowMonth() {
		Date date = new Date();
		GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
		gc.setTime(date);
		return gc.get(2) + 1;
	}

	/**
	 * 两个日期相减得到的天数
	 * @param beginDate  开始日期
	 * @param endDate   结束日期
	 * @return
	 */
	public static int getDiffDays(Date beginDate, Date endDate) {
		if (beginDate == null || endDate == null) {
			throw new IllegalArgumentException("getDiffDays param is null!");
		}
		long diff = (endDate.getTime() - beginDate.getTime()) / (1000 * 60 * 60 * 24);
		int days = new Long(diff).intValue();
		return days;
	}

	/**
	 * 两个日期相减得到的毫秒数
	 * @param beginDate 开始日期
	 * @param endDate 结束日期
	 * @return
	 */
	public static long dateDiff(Date beginDate, Date endDate) {
		long date1ms = beginDate.getTime();
		long date2ms = endDate.getTime();
		return date2ms - date1ms;
	}

	/**
	 * 获取两个日期中的最大日期
	 * @param beginDate
	 * @param endDate
	 * @return
	 */
	public static Date max(Date beginDate, Date endDate) {
		if (beginDate == null) {
			return endDate;
		}
		if (endDate == null) {
			return beginDate;
		}
		if (beginDate.after(endDate)) {
			return beginDate;
		}
		return endDate;
	}

	/**
	 * 获取两个日期中的最小日期
	 * @param beginDate
	 * @param endDate
	 * @return
	 */
	public static Date min(Date beginDate, Date endDate) {
		if (beginDate == null) {
			return endDate;
		}
		if (endDate == null) {
			return beginDate;
		}
		if (beginDate.after(endDate)) {
			return endDate;
		}
		return beginDate;
	}

	/**
	 * 返回某月该季度的第一个月
	 * @param date
	 * @return
	 */
	public static Date getFirstSeasonDate(Date date) {
		final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int sean = SEASON[cal.get(Calendar.MONTH)];
		cal.set(Calendar.MONTH, sean * 3 - 3);
		return cal.getTime();
	}

	/**
	 * 返回某个日期下几天的日期
	 * @param date
	 * @param i
	 * @return
	 */
	public static Date getNextDay(Date date, int i) {
		Calendar cal = new GregorianCalendar();
		cal.setTime(date);
		cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);
		return cal.getTime();
	}

	/**
	 * 返回某个日期前几天的日期
	 * @param date
	 * @param i
	 * @return
	 */
	public static Date getFrontDay(Date date, int i) {
		Calendar cal = new GregorianCalendar();
		cal.setTime(date);
		cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
		return cal.getTime();
	}

	/**
	 * 获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)
	 * @param beginYear
	 * @param beginMonth
	 * @param endYear
	 * @param endMonth
	 * @param k
	 * @return
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static List getTimeList(int beginYear, int beginMonth, int endYear, int endMonth, int k) {
		List list = new ArrayList();
		if (beginYear == endYear) {
			for (int j = beginMonth; j <= endMonth; j++) {
				list.add(getTimeList(beginYear, j, k));
			}
		} else {
			{
				for (int j = beginMonth; j < 12; j++) {
					list.add(getTimeList(beginYear, j, k));
				}
				for (int i = beginYear + 1; i < endYear; i++) {
					for (int j = 0; j < 12; j++) {
						list.add(getTimeList(i, j, k));
					}
				}
				for (int j = 0; j <= endMonth; j++) {
					list.add(getTimeList(endYear, j, k));
				}
			}
		}
		return list;
	}

	/**
	 * 获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
	 * @param beginYear
	 * @param beginMonth
	 * @param k
	 * @return
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static List getTimeList(int beginYear, int beginMonth, int k) {
		List list = new ArrayList();
		Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
		int max = begincal.getActualMaximum(Calendar.DATE);
		for (int i = 1; i < max; i = i + k) {
			list.add(begincal.getTime());
			begincal.add(Calendar.DATE, k);
		}
		begincal = new GregorianCalendar(beginYear, beginMonth, max);
		list.add(begincal.getTime());
		return list;
	}

    /**
     * 得到当前日期的前一天日期
     * @return
     */
    public String getNowDate(){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1); //得到前一天
        Date date = calendar.getTime();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String yesterday=df.format(date);
        return yesterday;
    }    

    /**
     * 得到指定日期后x年日期
     * @param day
     * @return
     */
    public static Date getDateAfterYears(Date day,int year){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(day);
        calendar.add(Calendar.DATE, +year); //得到后x年
        Date date = calendar.getTime();
        return date;
    }

    /**
     * 得到当前日期的前x天日期
     * @param day
     * @return
     */
    public static Date getNowDate(int day){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -day); //得到前x天
        Date date = calendar.getTime();
        return date;
    }

    /**
     * 得到当前日期的前x天日期
     * @param year
     * @return
     */
    public static Date getFutureDate(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.YEAR, +year); //得到前x年
        Date date = calendar.getTime();
        return date;
    }

     /**
     * 根据具体年份周数获取日期范围(2019-12-1~2019-12-7)
     * 传入(2019-51) 年+多少周
     * @param date
     * @return
     */
    public String getWeekDays(String date) {
        String[] arry=date.split("-");
        // 计算目标周数
        Integer targetNum=0;
        String str=arry[0];
        String wk=arry[1];
        int year=Integer.parseInt(str.trim());
        int week=Integer.parseInt(wk.trim());
        if (week + targetNum > 52) {
            year++;
            //修改:2020-01-07  sql查询出的是53周,导致页面出现两个一样的周数
            week += targetNum - 53;
        } else if (week + targetNum <= 0) {
            year--;
            week += targetNum + 52;
        } else {
            week += targetNum;
        }

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal=Calendar.getInstance();

        // 设置每周的开始日期
        cal.setFirstDayOfWeek(Calendar.SUNDAY);

        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);

        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());

        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return beginDate + "~" + endDate;
    }

    /**
     * 计算月份范围(2019-5 =2019-4~2019-5)
     * 传入(2019-5)年+月
     * @param dates
     * @return
     */
    public String getMonth(String dates){
        String[] arry=dates.split("-");
        // 计算目标周数
        String str=arry[0];
        String wk=arry[1];
        int year=Integer.parseInt(str.trim());//年
        int month=Integer.parseInt(wk.trim());//月
        int mon=0;
        int yea=0;
        if (month>0 && month<13){
            mon=month+1;
            if (mon==13){
                mon=1;
                yea=year+1;
            }else if (mon==2){
                yea=year+1;
            }
        }
        String date=year+"-"+month+"~"+yea+"-"+mon;
        return date;
    }
	
}

还有一些,等会儿补

========================================================================

import org.apache.commons.lang3.time.DateFormatUtils;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class DateUtil extends org.apache.commons.lang3.time.DateUtils {
	public static final String DATE_FORMATE_1 = "yyyy-MM-dd";

	public static final String DATE_FORMATE_2 = "yyyy-MM-dd HH:mm:ss";

	public static final String DATE_FORMATE_3 = "yyyy/MM/dd";

	public static final String DATE_FORMATE_4 = "yyyy/MM/dd HH:mm:ss";

	public static final String DATE_FORMATE_5 = "yyyyMMddHHmmss";

	private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
			"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss",
			"yyyy.MM.dd HH:mm", "yyyy.MM", "yyyyMMddHHmmss" };

	/**
	 * 得到当前日期字符串 格式(yyyy-MM-dd)
	 */
	public static String getDate() {
		return getDate("yyyy-MM-dd");
	}

	/**
	 * 得到当前日期字符串 格式(yyyyMM)
	 */
	public static String getDateMonth() {
		return getDate("yyyyMM");
	}
	/**
	 * 得到当前日期字符串 格式(yyyyMMdd)
	 */
	public static String getDateDay() {
		return getDate("yyyyMMdd");
	}

	/**
	 * 得到当前日期字符串 格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
	 */
	public static String getDate(String pattern) {
		return DateFormatUtils.format(new Date(), pattern);
	}

	/**
	 * 得到指定日期后x分钟日期
	 * @param minute
	 * @return
	 */
	public static Date getDateAfterMinute(Date day,int minute){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(day);
		calendar.add(Calendar.MINUTE, +minute); //得到后x分钟
		Date date = calendar.getTime();
		return date;
	}

	/**
	 * 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E"
	 */
	public static String formatDate(Date date, Object... pattern) {
		String formatDate;
		if (pattern != null && pattern.length > 0) {
			formatDate = DateFormatUtils.format(date, pattern[0].toString());
		} else {
			formatDate = DateFormatUtils.format(date, "yyyy-MM-dd");
		}
		return formatDate;
	}

	/**
	 * 得到日期时间字符串,转换格式(yyyy-MM-dd HH:mm:ss)
	 */
	public static String formatDateTime(Date date) {
		return formatDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 得到当前时间字符串 格式(HH:mm:ss)
	 */
	public static String getTime() {
		return formatDate(new Date(), "HH:mm:ss");
	}

	/**
	 * 得到当前日期和时间字符串 格式(yyyyMMddHHmmss)
	 */
	public static String getDateTimeStamp() {
		return formatDate(new Date(), "yyyyMMddHHmmss");
	}
	/**
	 * 得到当前日期和时间字符串 格式(yyyy-MM-dd HH:mm:ss)
	 */
	public static String getDateTime() {
		return formatDate(new Date(), "yyyy-MM-dd HH:mm:ss");
	}

	public static String getDateTime(String pattern) {
		return formatDate(new Date(), pattern);
	}

	/**
	 * 得到当前年份字符串 格式(yyyy)
	 */
	public static String getYear() {
		return formatDate(new Date(), "yyyy");
	}

	/**
	 * 得到当前月份字符串 格式(MM)
	 */
	public static String getMonth() {
		return formatDate(new Date(), "MM");
	}

	/**
	 * 得到当天字符串 格式(dd)
	 */
	public static String getDay() {
		return formatDate(new Date(), "dd");
	}

	/**
	 * 得到当前星期字符串 格式(E)星期几
	 */
	public static String getWeek() {
		return formatDate(new Date(), "E");
	}

	/**
	 * 日期型字符串转化为日期 格式 { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm",
	 * "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy.MM.dd",
	 * "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm" }
	 */
	public static Date parseDate(Object str) {
		if (str == null) {
			return null;
		}

		try {
			return parseDate(str.toString(), parsePatterns);
		} catch (ParseException e) {
			return null;
		}
	}

	/**
	 * 获取过去的天数
	 */
	public static long pastDays(Date date) {
		long t = System.currentTimeMillis() - date.getTime();
		return t / (24 * 60 * 60 * 1000);
	}

	/**
	 * 获取过去的小时
	 */
	public static long pastHour(Date date) {
		long t = System.currentTimeMillis() - date.getTime();
		return t / (60 * 60 * 1000);
	}

	/**
	 * 获取过去的分钟
	 */
	public static long pastMinutes(Date date) {
		long t = System.currentTimeMillis() - date.getTime();
		return t / (60 * 1000);
	}

	/**
	 * 转换为时间(天,时:分:秒.毫秒)
	 */
	public static String formatDateTime(long timeMillis) {
		long day = timeMillis / (24 * 60 * 60 * 1000);
		long hour = (timeMillis / (60 * 60 * 1000) - day * 24);
		long min = ((timeMillis / (60 * 1000)) - day * 24 * 60 - hour * 60);
		long s = (timeMillis / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
		long sss = (timeMillis - day * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000 - s * 1000);
		return (day > 0 ? day + "," : "") + hour + ":" + min + ":" + s + "." + sss;
	}

	/**
	 * 获取两个日期之间的天数
	 */
	public static double getDistanceOfTwoDate(Date before, Date after) {
		long beforeTime = before.getTime();
		long afterTime = after.getTime();
		return (afterTime - beforeTime) / (1000 * 60 * 60 * 24);
	}

	public static Timestamp getTimestamp() {
		return new Timestamp(System.currentTimeMillis());
	}

	/**
	 * 获取当前时间之前或之后 N 天的时间
	 *
	 * @param i
	 *            天数, 负数为之前天数, 正数为之后天数
	 */
	public static Timestamp getTimestamp(int i) {
		Date date = new Date();

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, i);
		date = calendar.getTime();

		return new Timestamp(date.getTime());
	}
	
	/**
	 * String时间字符串转换LocalDateTime
	 * @param str
	 * @return
	 */
	public static LocalDateTime stringToLocalDateTime(String str) {
		if (str != null && !"".equals(str.trim())) {
			str = str.replaceAll("/", "-");
			if (str.contains("Z")){
				DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
				return LocalDateTime.parse(str, df);
			}else {
				DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
				LocalDateTime ldt = LocalDateTime.parse(str, df);
				return ldt;
			}
		}
		return null;
	}

	/**
	 * yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
	 * String时间字符串转换LocalDateTime
	 * @param str
	 * @return
	 */
	public static LocalDateTime longTimeToLocalDateTime(String str) {
		if (str != null && !"".equals(str.trim())) {
			DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
			return LocalDateTime.parse(str, df);
		}
		return null;
	}

	/**
	 * yyyy-MM-dd格式的String时间字符串转换LocalDateTime
	 * @param str
	 * @return
	 */
	public static LocalDateTime TimeToLocalDateTime(String str) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = simpleDateFormat.parse(str + " 00:00:00");
		} catch (ParseException e) {
			e.printStackTrace();
		}
		LocalDateTime localDateTime = formatDateToLocalDateTime(date);
		return localDateTime;
	}

	/**
	 * String时间字符串转换LocalDate
	 * @param str
	 * @return
	 */
	public static LocalDate stringToLocalDate(String str) {
		if (str!=null && !str.trim().equals("")) {
			return  LocalDate.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
		}
		return null;
	}
	
	 /**
     * 日期转星期
     * @param date yyyy-MM-dd
     * @return
     */
    public static String dateToWeek(String date) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        String[] weekDays = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };
        Calendar cal = Calendar.getInstance(); // 获得一个日历
        try {
            Date dateT = f.parse(date);
            cal.setTime(dateT);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
        if (w < 0)
            w = 0;
        return weekDays[w];
    }

	/**
	 * 获取当天0点0时0分0秒
	 * @return
	 */
	public static String todayBeginTime(){
		SimpleDateFormat sdfYMD = new SimpleDateFormat(DATE_FORMATE_2);
		Calendar calendar = calendarInit();
		String format = sdfYMD.format(calendar.getTime());
		return format;
	}

	/**
	 * 获取昨天0点0时0分0秒
	 * @return
	 */
	public static String yesterdayBeginTime(){
		SimpleDateFormat sdfYMD = new SimpleDateFormat(DATE_FORMATE_2);
		Calendar calendar = calendarInit();
		calendar.add(Calendar.DATE,-1); //当前日期加一
		String format  = sdfYMD.format(calendar.getTime());
		return format;
	}

	/**
	 * calendar初始化-当天0点0时0分0秒
	 * @return
	 */
	public static Calendar calendarInit(){
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.SECOND,0); //这是将当天的【秒】设置为0
		calendar.set(Calendar.MINUTE,0); //这是将当天的【分】设置为0
		calendar.set(Calendar.HOUR_OF_DAY,0); //这是将当天的【时】设置为0
		return calendar;
	}

	/**
	 * 日期范围 - 切片
	 * @param startDate 起始日期
	 * @param endDate 结束日期
	 * @param type 切片类型 1-年 2-月 3-日 4-小时
	 * @return 切片日期
	 */
	public static List<String> sliceUpDateRange(String startDate, String endDate , int type ) {
		List<String> rs = new ArrayList<>();

		try {
			int dt = Calendar.DATE;
			String pattern = "yyyy-MM-dd";
			if (type==1) {
				pattern = "yyyy";
				dt = Calendar.YEAR;
			} else if (type==2) {
				pattern = "yyyy-MM";
				dt = Calendar.MONTH;
			} else if (type==3) {
				pattern = "yyyy-MM-dd";
				dt = Calendar.DATE;
			}else if (type==4) {
				pattern = "yyyy-MM-dd HH";
				dt = Calendar.HOUR_OF_DAY;
			}
			SimpleDateFormat sd = new SimpleDateFormat(pattern);
			Calendar sc = Calendar.getInstance();
			Calendar ec = Calendar.getInstance();
			sc.setTime(sd.parse(startDate));
			ec.setTime(sd.parse(endDate));
			while (sc.compareTo(ec) < 1) {
				rs.add(sd.format(sc.getTime()));
				sc.add(dt, 1);
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return rs;
	}

	/**
	 * LocalDateTime转String
	 * @param date
	 * @return
	 */
	public static String formatLocalDateTimeString(LocalDateTime date) {
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		return date.format(dtf);
	}

	/**
	 * Date转LocalDateTime
	 * @param date
	 * @return
	 */
	public static LocalDateTime formatDateToLocalDateTime(Date date){
		LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
//		LocalDate localDate = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
		return localDateTime;
	}


}

LocalDateTime类型比较大小:

    /**
     * 比较日期大小 A小于B
     * @param date1
     * @param date2
     * @return true 小于 false 大于
     */
    public static boolean localDateBefore(Date date1,Date date2) {
        Instant startTime = date1.toInstant();
        Instant endTime = date2.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime startDate = LocalDateTime.ofInstant(startTime, zoneId);
        LocalDateTime endDate = LocalDateTime.ofInstant(endTime, zoneId);
        return startDate.isBefore(endDate);
    }


    /**
     * 比较日期大小 A大于B
     * @param date1
     * @param date2
     * @return true 大于 false 小于
     */
    public static boolean localDateAfter(Date date1,Date date2) {
        Instant startTime = date1.toInstant();
        Instant endTime = date2.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime startDate = LocalDateTime.ofInstant(startTime, zoneId);
        LocalDateTime endDate = LocalDateTime.ofInstant(endTime, zoneId);
        return startDate.isAfter(endDate);
    }


   /**
     * 比较日期大小 A等于B
     * @param date1
     * @param date2
     * @return true 相等 false 不相等
     */
    public static boolean localDateEqual(Date date1,Date date2) {
        Instant startTime = date1.toInstant();
        Instant endTime = date2.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime startDate = LocalDateTime.ofInstant(startTime, zoneId);
        LocalDateTime endDate = LocalDateTime.ofInstant(endTime, zoneId);
        return startDate.isEqual(endDate);
    }



List对象过滤时间区间:

if(StringUtils.isNotBlank(param.getStartApplyDate())){
                tmpList = tmpList.stream().filter(t -> param.getStartApplyDate() != null && t.getApplyDate().isAfter(DateUtil.TimeToLocalDateTime(param.getStartApplyDate()))).collect(Collectors.toList());
            }
if(StringUtils.isNotBlank(param.getEndApplyDate())){
                tmpList = tmpList.stream().filter(t -> param.getEndApplyDate() != null && t.getApplyDate().isBefore(DateUtil.TimeToLocalDateTime(param.getEndApplyDate()))).collect(Collectors.toList());
            }

1.LocalDate转Date

LocalDate nowLocalDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());

2.LocalDateTime转Date

LocalDateTime localDateTime = LocalDateTime.now();
Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());

3.Date转LocalDateTime(LocalDate)

Date date =newDate();
LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
LocalDate localDate = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();

4.LocalDate转时间戳

LocalDate localDate = LocalDate.now();
longtimestamp = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();

5.LocalDateTime转时间戳

LocalDateTime localDateTime = LocalDateTime.now();
longtimestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();

6.时间戳转LocalDateTime(LocalDate)

longtimestamp = System.currentTimeMillis();
LocalDate localDate = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
LocalDateTime localDateTime = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();

 获取系统时间

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println(df.format(System.currentTimeMillis()));

后面再有再补~~~~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值