public static List < Integer > getSplitBeginIndexes ( TimeSeries series , Duration splitDuration ) { ArrayList < Integer > beginIndexes = new ArrayList <> ( ) ; int beginIndex = series . getBeginIndex ( ) ; int endIndex = series . getEndIndex ( ) ; // Adding the first begin index beginIndexes . add ( beginIndex ) ; // Building the first interval before next split ZonedDateTime beginInterval = series . getFirstTick ( ) . getEndTime ( ) ; ZonedDateTime endInterval = beginInterval . plus ( splitDuration ) ; for ( int i = beginIndex ; i <= endIndex ; i ++ ) { // For each tick... ZonedDateTime tickTime = series . getTick ( i ) . getEndTime ( ) ; if ( tickTime . isBefore ( beginInterval ) || ! tickTime . isBefore ( endInterval ) ) { // Tick out of the interval if ( ! endInterval . isAfter ( tickTime ) ) { // Tick after the interval // --> Adding a new begin index beginIndexes . add ( i ) ; } // Building the new interval before next split beginInterval = endInterval . isBefore ( tickTime ) ? tickTime : endInterval ; endInterval = beginInterval . plus ( splitDuration ) ; } } return beginIndexes ; }
Builds a list of split indexes from splitDuration .