倆個日期計算小時,天數(shù),月份,還有時間組合

以下方法都可以直接調用,不用擔心

方法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;

? ? }

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容