以下方法都可以直接調用,不用擔心
方法1
/**
? ? * period計算月數(shù)
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("月數(shù)獲取")
? ? public static int mouthsBetween(Date? startDate, Date? endDate) {
? ? ? ? Calendar startCalendar = new GregorianCalendar();
? ? ? ? startCalendar.setTime(startDate);
? ? ? ? Calendar endCalendar = new GregorianCalendar();
? ? ? ? endCalendar.setTime(endDate);
? ? ? ? //計算月份和年份
? ? ? ? int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
? ? ? ? int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) -
? ? ? ? startCalendar.get(Calendar.MONTH);
? ? ? ? System.out.println("相差月份? "+diffMonth+"? 相差年份? "+diffYear);
? ? ? ? return diffMonth;
? ? }
方法2
? ? /**
? ? * period計算天數(shù)
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("天數(shù)獲取")
? ? public static long daysBetween(Date? startDate, Date? endDate) {
? ? ? ? long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
? ? ? ? return betweenDate;
? ? }
方法3
? ? /**
? ? * period計算小時
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("小數(shù)獲取")
? ? public static long hoursBetween(Date? startDate, Date? endDate) {
? ? ? ? long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*1000);
? ? ? ? return betweenDate;
? ? }
方法4
以下方法可直接調用,顯示的數(shù)據(jù)格式
2020-1-11 01:00:00? ?2020-1-11 01:59:59
2020-1-11 02:00:00? ?2020-1-11 02:59:59
2020-1-11 03:00:00? ?2020-1-11 03:59:59
/**
? ? * 小時的拼接
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("小時的拼接")
? ? public static List<String> getTodayHours(String startDate,String endDate) throws
? ? Exception {
? ? ? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH");
? ? ? ? //date1 轉換以(2020-01-11 10:00:00)展示
? ? ? ? Date date1 = simpleDateFormat1.parse(startDate);
? ? ? ? String start=simpleDateFormat.format(date1);
? ? ? ? Date date2 = simpleDateFormat.parse(endDate);
? ? ? ? //初始時間拼接 date1(2020-01-11 10:00:00),initialTime(2020-01-11 10:59:59)
? ? ? ? List dateList = new ArrayList<String>();
? ? ? ? Calendar initialCalendar = Calendar.getInstance();
? ? ? ? List tlist=new ArrayList<String>();
? ? ? ? initialCalendar.setTime(date1);
? ? ? ? initialCalendar.add(Calendar.MINUTE, 59);
? ? ? ? initialCalendar.add(Calendar.SECOND, 59);
? ? ? ? Date initialDate = initialCalendar.getTime();
? ? ? ? String initial=simpleDateFormat.format(initialDate);
? ? ? ? tlist.add(start);
? ? ? ? tlist.add(initial);
? ? ? ? dateList.add(tlist);
? ? ? ? //計算時間
? ? ? ? Interval interval = new Interval(date1.getTime(),date2.getTime());
? ? ? ? Period period = interval.toPeriod();
? ? ? ? Integer hour=period.getHours();
? ? ? ? //獲取24內的各時間點,可能跨天
? ? ? ? for (int i=0; i<hour; i++) {
? ? ? ? ? ? List timeList=new ArrayList<String>();
? ? ? ? ? ? //給當前時間加一秒
? ? ? ? ? ? initialCalendar.add(Calendar.SECOND, 1);
? ? ? ? ? ? Date d1=initialCalendar.getTime();
? ? ? ? ? ? //轉成時間轉成字符串固定格式
? ? ? ? ? ? String str1=simpleDateFormat.format(d1);
? ? ? ? ? ? //給當前時間加59分59秒
? ? ? ? ? ? initialCalendar.add(Calendar.MINUTE, 59);
? ? ? ? ? ? initialCalendar.add(Calendar.SECOND, 59);
? ? ? ? ? ? Date d2 = initialCalendar.getTime();
? ? ? ? ? ? //注意時間轉換問題
? ? ? ? ? ? Date replaceTime=d2;
? ? ? ? ? ? String str2=simpleDateFormat.format(replaceTime);
? ? ? ? ? ? timeList.add(str1);
? ? ? ? ? ? timeList.add(str2);
? ? ? ? ? ? //System.out.println("添加到數(shù)組中的數(shù)據(jù):? "+timeList);
? ? ? ? ? ? //為下一個時間段 設置初始值
? ? ? ? ? ? initialCalendar.setTime(d2);
? ? ? ? ? ? dateList.add(timeList);
? ? ? ? }
? ? ? ? return dateList;
? ? }
方法5
以下方法可直接調用,顯示的數(shù)據(jù)格式
2020-1-11 00:00:00 2020-1-11 23:59:59
2020-1-12?00:00:00 2020-1-12?23:59:59
2020-1-13?00:00:00 2020-1-13?23:59:59
/**
? ? * 天數(shù)的拼接
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("天數(shù)的拼接")
? ? public static List<String> getTodays(String startDate,String endDate) throws
? ? Exception {
? ? ? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
? ? ? ? //date1 轉換以(2020-01-11 00:00:00)展示
? ? ? ? Date date1 = simpleDateFormat1.parse(startDate);
? ? ? ? String start=simpleDateFormat.format(date1);
? ? ? ? Date date2 = simpleDateFormat.parse(endDate);
? ? ? ? //startDate1為準確計算天數(shù)
? ? ? ? Date startDate1 = simpleDateFormat.parse(startDate);
? ? ? ? long today=daysBetween(startDate1,date2);
? ? ? ? //初始時間拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)
? ? ? ? List dateList = new ArrayList<String>();
? ? ? ? Calendar initialCalendar = Calendar.getInstance();
? ? ? ? //天數(shù)為1
? ? ? ? List tlist = new ArrayList<String>();
? ? ? ? initialCalendar.setTime(date1);
? ? ? ? initialCalendar.add(Calendar.HOUR, 23);
? ? ? ? initialCalendar.add(Calendar.MINUTE, 59);
? ? ? ? initialCalendar.add(Calendar.SECOND, 59);
? ? ? ? Date initialDate = initialCalendar.getTime();
? ? ? ? String initial = simpleDateFormat.format(initialDate);
? ? ? ? tlist.add(start);
? ? ? ? tlist.add(initial);
? ? ? ? dateList.add(tlist);
? ? ? ? //獲取24內的各時間點,可能跨天
? ? ? ? System.out.println("天數(shù)是 " + today);
? ? ? ? for (int i = 0; i < today; i++) {
? ? ? ? ? ? List timeList = new ArrayList<String>();
? ? ? ? ? ? //給當前時間加一秒
? ? ? ? ? ? initialCalendar.add(Calendar.SECOND, 1);
? ? ? ? ? ? Date d1 = initialCalendar.getTime();
? ? ? ? ? ? //轉成時間轉成字符串固定格式
? ? ? ? ? ? String str1 = simpleDateFormat.format(d1);
? ? ? ? ? ? //給當前時間加23時59分59秒
? ? ? ? ? ? initialCalendar.add(Calendar.HOUR, 23);
? ? ? ? ? ? initialCalendar.add(Calendar.MINUTE, 59);
? ? ? ? ? ? initialCalendar.add(Calendar.SECOND, 59);
? ? ? ? ? ? Date d2 = initialCalendar.getTime();
? ? ? ? ? ? //注意時間轉換問題
? ? ? ? ? ? Date replaceTime = d2;
? ? ? ? ? ? String str2 = simpleDateFormat.format(replaceTime);
? ? ? ? ? ? timeList.add(str1);
? ? ? ? ? ? timeList.add(str2);
? ? ? ? ? ? //System.out.println("添加到數(shù)組中的數(shù)據(jù):? "+timeList);
? ? ? ? ? ? //為下一個時間段 設置初始值
? ? ? ? ? ? initialCalendar.setTime(d2);
? ? ? ? ? ? dateList.add(timeList);
? ? ? ? }
? ? ? ? return dateList;
? ? }
方法6
以下方法可直接調用,顯示的數(shù)據(jù)格式
2020-1-01? ? ? ?2020-1-31
2020-2-01? ? ? ?2020-2-29?
2020-3-01? ? ? ? 2020-3-31?
/**
? ? * 月數(shù)的拼接
? ? * @param startDate 開始時間
? ? * @param endDate 結束時間
? ? */
? ? @ApiOperation("月數(shù)的拼接")
? ? public static List<String> getMonths(String startDate,String endDate) throws
? ? Exception {
? ? ? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
? ? ? ? SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");
? ? ? ? //date1 轉換以(2020-01-11 00:00:00)展示
? ? ? ? Date date1 = simpleDateFormat1.parse(startDate);
? ? ? ? //
? ? ? ? String start=simpleDateFormat.format(date1);
? ? ? ? Date date2 = simpleDateFormat.parse(endDate);
? ? ? ? System.out.println("date1是 "+date1+"date2是 "+date2);
? ? ? ? //初始時間拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)
? ? ? ? List dateList = new ArrayList<String>();
? ? ? ? Calendar initialCalendar = Calendar.getInstance();
? ? ? ? List tlist=new ArrayList<String>();
? ? ? ? initialCalendar.setTime(date1);
? ? ? ? initialCalendar.add(Calendar.MONTH, 1);
? ? ? ? initialCalendar.add(Calendar.DATE, -1);
? ? ? ? Date initialDate = initialCalendar.getTime();
? ? ? ? String initial=simpleDateFormat.format(initialDate);
? ? ? ? tlist.add(start);
? ? ? ? tlist.add(initial);
? ? ? ? dateList.add(tlist);
? ? ? ? //計算時間
? ? ? ? Interval interval = new Interval(date1.getTime(),date2.getTime());
? ? ? ? Period period = interval.toPeriod();
? ? ? ? Integer months=period.getMonths();
? ? ? ? //獲取24內的各時間點,可能跨天
? ? ? ? System.out.println("月數(shù)是 "+months);
? ? ? ? for (int i=0; i<months; i++) {
? ? ? ? ? ? List timeList=new ArrayList<String>();
? ? ? ? ? ? //給當前時間加一秒
? ? ? ? ? ? initialCalendar.add(Calendar.DATE, 1);
? ? ? ? ? ? Date d1=initialCalendar.getTime();
? ? ? ? ? ? //轉成時間轉成字符串固定格式
? ? ? ? ? ? String str1=simpleDateFormat.format(d1);
? ? ? ? ? ? //給當前時間加23時59分59秒
? ? ? ? ? ? initialCalendar.add(Calendar.MONTH, 1);
? ? ? ? ? ? initialCalendar.add(Calendar.DATE, -1);
? ? ? ? ? ? Date d2 = initialCalendar.getTime();
? ? ? ? ? ? //注意時間轉換問題
? ? ? ? ? ? Date replaceTime=d2;
? ? ? ? ? ? String str2=simpleDateFormat.format(replaceTime);
? ? ? ? ? ? timeList.add(str1);
? ? ? ? ? ? timeList.add(str2);
? ? ? ? ? ? //System.out.println("添加到數(shù)組中的數(shù)據(jù):? "+timeList);
? ? ? ? ? ? //為下一個時間段 設置初始值
? ? ? ? ? ? initialCalendar.setTime(d2);
? ? ? ? ? ? dateList.add(timeList);
? ? ? ? }
? ? ? ? return dateList;
? ? }