?以下方法就可以直接調(diào)用
/** * 計算月數(shù) * @param startDate 開始時間 * @param endDate 結(jié)束時間 */ @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; } /** * 計算天數(shù) * @param startDate 開始時間 * @param endDate 結(jié)束時間 */ @ApiOperation("天數(shù)獲取") public static long daysBetween(Date startDate, Date endDate) { long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000); return betweenDate; } /** * 計算小時 * @param startDate 開始時間 * @param endDate 結(jié)束時間 */ @ApiOperation("小數(shù)獲取") public static long hoursBetween(Date startDate, Date endDate) { long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*1000); return betweenDate; }
1) 以下方法可直接調(diào)用,顯示的數(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
......
1 /** 2 * 小時的拼接 3 * @param startDate 開始時間 4 * @param endDate 結(jié)束時間 5 */ 6 @ApiOperation("小時的拼接") 7 public static List<String> getTodayHours(String startDate,String endDate) throws Exception { 8 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 9 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH");10 //date1 轉(zhuǎn)換以(2020-01-11 10:00:00)展示11 Date date1 = simpleDateFormat1.parse(startDate);12 String start=simpleDateFormat.format(date1);13 Date date2 = simpleDateFormat.parse(endDate);14 //初始時間拼接 date1(2020-01-11 10:00:00),initialTime(2020-01-11 10:59:59)15 List dateList = new ArrayList<String>();16 Calendar initialCalendar = Calendar.getInstance();17 List tlist=new ArrayList<String>();18 initialCalendar.setTime(date1);19 initialCalendar.add(Calendar.MINUTE, 59);20 initialCalendar.add(Calendar.SECOND, 59);21 Date initialDate = initialCalendar.getTime();22 String initial=simpleDateFormat.format(initialDate);23 tlist.add(start);24 tlist.add(initial);25 dateList.add(tlist);26 //計算時間27 Date startDate1 = simpleDateFormat.parse(startDate);28 Long hour=hoursBetween(startDate1,date2);29 //獲取24內(nèi)的各時間點,可能跨天30 for (int i=0; i<hour; i ) {31 List timeList=new ArrayList<String>();32 //給當(dāng)前時間加一秒33 initialCalendar.add(Calendar.SECOND, 1);34 Date d1=initialCalendar.getTime();35 //轉(zhuǎn)成時間轉(zhuǎn)成字符串固定格式36 String str1=simpleDateFormat.format(d1);37 //給當(dāng)前時間加59分59秒38 initialCalendar.add(Calendar.MINUTE, 59);39 initialCalendar.add(Calendar.SECOND, 59);40 Date d2 = initialCalendar.getTime();41 //注意時間轉(zhuǎn)換問題42 Date replaceTime=d2;43 String str2=simpleDateFormat.format(replaceTime);44 timeList.add(str1);45 timeList.add(str2);46 //System.out.println("添加到數(shù)組中的數(shù)據(jù): " timeList);47 //為下一個時間段 設(shè)置初始值48 initialCalendar.setTime(d2);49 dateList.add(timeList);50 }51 return dateList;52 }
?2)以下方法可直接調(diào)用,顯示的數(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
1 /** 2 * 天數(shù)的拼接 3 * @param startDate 開始時間 4 * @param endDate 結(jié)束時間 5 */ 6 @ApiOperation("天數(shù)的拼接") 7 public static List<String> getTodays(String startDate,String endDate) throws 8 Exception { 9 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");10 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");11 12 //date1 轉(zhuǎn)換以(2020-01-11 00:00:00)展示13 Date date1 = simpleDateFormat1.parse(startDate);14 String start=simpleDateFormat.format(date1);15 Date date2 = simpleDateFormat.parse(endDate);16 //startDate1為準(zhǔn)確計算天數(shù)17 Date startDate1 = simpleDateFormat.parse(startDate);18 long today=daysBetween(startDate1,date2);19 20 //初始時間拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)21 List dateList = new ArrayList<String>();22 Calendar initialCalendar = Calendar.getInstance();23 //天數(shù)為124 List tlist = new ArrayList<String>();25 initialCalendar.setTime(date1);26 initialCalendar.add(Calendar.HOUR, 23);27 initialCalendar.add(Calendar.MINUTE, 59);28 initialCalendar.add(Calendar.SECOND, 59);29 Date initialDate = initialCalendar.getTime();30 String initial = simpleDateFormat.format(initialDate);31 tlist.add(start);32 tlist.add(initial);33 dateList.add(tlist);34 //獲取24內(nèi)的各時間點,可能跨天35 System.out.println("天數(shù)是 " today);36 for (int i = 0; i < today; i ) {37 List timeList = new ArrayList<String>();38 //給當(dāng)前時間加一秒39 initialCalendar.add(Calendar.SECOND, 1);40 Date d1 = initialCalendar.getTime();41 //轉(zhuǎn)成時間轉(zhuǎn)成字符串固定格式42 String str1 = simpleDateFormat.format(d1);43 //給當(dāng)前時間加23時59分59秒44 initialCalendar.add(Calendar.HOUR, 23);45 initialCalendar.add(Calendar.MINUTE, 59);46 initialCalendar.add(Calendar.SECOND, 59);47 Date d2 = initialCalendar.getTime();48 //注意時間轉(zhuǎn)換問題49 Date replaceTime = d2;50 String str2 = simpleDateFormat.format(replaceTime);51 timeList.add(str1);52 timeList.add(str2);53 //System.out.println("添加到數(shù)組中的數(shù)據(jù): " timeList);54 //為下一個時間段 設(shè)置初始值55 initialCalendar.setTime(d2);56 dateList.add(timeList);57 }58 59 return dateList;60 }
?3)以下方法可直接調(diào)用,顯示的數(shù)據(jù)格式
2020-1-01? ? ? ?2020-1-31
2020-2-01? ? ? ?2020-2-29?
2020-3-01? ? ? ? 2020-3-31?
1 /** 2 * 月數(shù)的拼接 3 * @param startDate 開始時間 4 * @param endDate 結(jié)束時間 5 */ 6 @ApiOperation("月數(shù)的拼接") 7 public static List<String> getMonths(String startDate,String endDate) throws 8 Exception { 9 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");10 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM");11 //date1 轉(zhuǎn)換以(2020-01-11 00:00:00)展示12 Date date1 = simpleDateFormat1.parse(startDate);13 //14 String start=simpleDateFormat.format(date1);15 Date date2 = simpleDateFormat.parse(endDate);16 System.out.println("date1是 " date1 "date2是 " date2);17 //初始時間拼接 date1(2020-01-11 00:00:00),initialTime(2020-01-11 23:59:59)18 List dateList = new ArrayList<String>();19 Calendar initialCalendar = Calendar.getInstance();20 List tlist=new ArrayList<String>();21 initialCalendar.setTime(date1);22 initialCalendar.add(Calendar.MONTH, 1);23 initialCalendar.add(Calendar.DATE, -1);24 Date initialDate = initialCalendar.getTime();25 String initial=simpleDateFormat.format(initialDate);26 tlist.add(start);27 tlist.add(initial);28 dateList.add(tlist);29 //計算時間30 Interval interval = new Interval(date1.getTime(),date2.getTime());31 Period period = interval.toPeriod();32 Integer months=period.getMonths();33 //獲取24內(nèi)的各時間點,可能跨天34 System.out.println("月數(shù)是 " months);35 for (int i=0; i<months; i ) {36 List timeList=new ArrayList<String>();37 //給當(dāng)前時間加一秒38 initialCalendar.add(Calendar.DATE, 1);39 Date d1=initialCalendar.getTime();40 //轉(zhuǎn)成時間轉(zhuǎn)成字符串固定格式41 String str1=simpleDateFormat.format(d1);42 //給當(dāng)前時間加23時59分59秒43 initialCalendar.add(Calendar.MONTH, 1);44 initialCalendar.add(Calendar.DATE, -1);45 Date d2 = initialCalendar.getTime();46 //注意時間轉(zhuǎn)換問題47 Date replaceTime=d2;48 String str2=simpleDateFormat.format(replaceTime);49 timeList.add(str1);50 timeList.add(str2);51 //System.out.println("添加到數(shù)組中的數(shù)據(jù): " timeList);52 //為下一個時間段 設(shè)置初始值53 initialCalendar.setTime(d2);54 dateList.add(timeList);55 }56 return dateList;57 }
?
來源:https://www.icode9.com/content-4-773651.html