記一次將時間段分成時間片段集合

2021-09-28 22:50:46 字數 1021 閱讀 8354

場景:開發中遇到乙個場景,傳入開始時間和結束時間,獲取大量日誌資料。

問題:當傳入的時間間距是三個月時,就可以獲取到資料,但如果超出三個月,就會報時間超時,因為資料庫的日誌量比較大,一次性在資料庫查詢大量資料容易超時,而且因為業務邏輯問題,所以沒法做分頁。所以想出乙個辦法,將傳入到時間段,切割成多個時間片段,再通過迴圈的方式處理業務,獲取到所有的日誌資料。

將開始日期和結束日期之間的時間段,分成三個月一組的map集合

// 將開始日期和結束日期之間的時間段,分成三個月一組的map集合

public static hashmapspiltdatetomonth(date begindate,date enddate)else

// 此一時間段的結束時間是下乙個時間段的開始時間

tempbegindate = tempenddate;

}return datemap;

}/***

* 獲取幾個月之後的日期

* @param inputdate

* @param number

* @return

*/public static date getaftermonth(date inputdate,int number)

calendar c = calendar.getinstance();//獲得乙個日曆的例項

c.settime(inputdate);//設定日曆時間

c.add(calendar.month,number);//在日曆的月份上增加6個月

date date = c.gettime();

return date;

}

測試類:

public static void main(string args) throws parseexception 

}

控制台:

判斷乙個時間段與一組時間段是否有相交

兩個時間段相交分為三種情況,如下圖所示 圖中的數字為時間點的id號 乙個時間段有開始時間點start和結束時間點end表示。1.設定這組時間段彼此互不相交,由陣列列表arraylist表示 timelist,timelist依次加入所有時間段的起末時間點。2.把要判斷的這條時間段的起末時間點依次加入...

這一段時間段的總結

看了太多雜七雜八的東西,而一直不肯去實踐,覺得還是得寫寫部落格,總覺得自己太過於貪心,什麼都想學,結果什麼都不精通。為了以後不再這樣下去,我覺得寫寫blog還是很有必要的。把自己學到的東西用自己的話表述出來,這是一種能力。而寫部落格 恰恰能幫助自己做到這一點。最近看了 effective c 因為看...

這一段時間段的總結

看了太多雜七雜八的東西,而一直不肯去實踐,覺得還是得寫寫部落格,總覺得自己太過於貪心,什麼都想學,結果什麼都不精通。為了以後不再這樣下去,我覺得寫寫blog還是很有必要的。把自己學到的東西用自己的話表述出來,這是一種能力。而寫部落格 恰恰能幫助自己做到這一點。最近看了 effective c 因為看...