获取开始日期与结束日期之间每天的list
public Map < String , List < String > > fetchDayListBetweenStartAndEnd ( String startTime, String endTime) { Map < String , List < String > > map = Maps . newHashMap ( ) ; SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd" ) ; List < String > startTimeList = Lists . newArrayList ( ) ; List < String > endTimeList = Lists . newArrayList ( ) ; Date startDate = null ; Date checkDate = null ; try { startDate = sdf. parse ( startTime) ; Date endDate = sdf. parse ( endTime) ; Calendar cal = Calendar . getInstance ( ) ; cal. setTime ( startDate) ; int year = cal. get ( Calendar . YEAR ) ; int month = cal. get ( Calendar . MONTH ) ; while ( startDate. before ( endDate) && month <= 11 ) { final int last = cal. getActualMaximum ( Calendar . DAY_OF_MONTH ) ; cal. set ( Calendar . DAY_OF_MONTH , last) ; Date lastDayOfMonth = cal. getTime ( ) ; if ( lastDayOfMonth. after ( endDate) ) { checkDate = endDate; } else { checkDate = lastDayOfMonth; } cal. setTime ( startDate) ; while ( startDate. before ( checkDate) ) { startTimeList. add ( sdf. format ( startDate) ) ; endTimeList. add ( sdf. format ( startDate) ) ; cal. add ( Calendar . DAY_OF_MONTH , 1 ) ; startDate = cal. getTime ( ) ; } startTimeList. add ( sdf. format ( checkDate) ) ; endTimeList. add ( sdf. format ( checkDate) ) ; month = month + 1 ; if ( month == 12 ) { year = year + 1 ; month = 0 ; } cal. set ( year, month, 1 ) ; startDate = cal. getTime ( ) ; startTime = sdf. format ( startDate) ; } if ( startTime. equals ( sdf. format ( endDate) ) ) { startTimeList. add ( startTime) ; endTimeList. add ( sdf. format ( endDate) ) ; } if ( ! startTimeList. isEmpty ( ) && ! endTimeList. isEmpty ( ) ) { map. put ( "dayTimeList" , startTimeList) ; } } catch ( Exception e) { e. printStackTrace ( ) ; } return map; }
获取开始日期与结束日期之间每个月的开始日期和结束日期的list
public Map < String , List < String > > fetchMonthFirstLastList ( String startTime, String endTime) { Map < String , List < String > > map = Maps . newHashMap ( ) ; SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd" ) ; List < String > startTimeList = Lists . newArrayList ( ) ; List < String > endTimeList = Lists . newArrayList ( ) ; Date startDate = null ; try { startDate = sdf. parse ( startTime) ; Date endDate = sdf. parse ( endTime) ; Calendar cal = Calendar . getInstance ( ) ; cal. setTime ( startDate) ; int year = cal. get ( Calendar . YEAR ) ; int month = cal. get ( Calendar . MONTH ) ; while ( startDate. before ( endDate) && month <= 11 ) { final int first = cal. getActualMinimum ( Calendar . DAY_OF_MONTH ) ; cal. set ( Calendar . DAY_OF_MONTH , first) ; Date firstDayOfMonth = cal. getTime ( ) ; if ( firstDayOfMonth. before ( startDate) ) { startTimeList. add ( sdf. format ( startDate) ) ; } else { startTime = sdf. format ( firstDayOfMonth) ; startTimeList. add ( startTime) ; } final int last = cal. getActualMaximum ( Calendar . DAY_OF_MONTH ) ; cal. set ( Calendar . DAY_OF_MONTH , last) ; Date lastDayOfMonth = cal. getTime ( ) ; if ( lastDayOfMonth. after ( endDate) ) { endTimeList. add ( sdf. format ( endDate) ) ; } else { endTimeList. add ( sdf. format ( lastDayOfMonth) ) ; } month += 1 ; if ( month == 12 ) { year = year + 1 ; month = 0 ; } cal. set ( year, month, 1 ) ; startDate = cal. getTime ( ) ; startTime = sdf. format ( startDate) ; } if ( startTime. equals ( sdf. format ( endDate) ) ) { startTimeList. add ( startTime) ; endTimeList. add ( sdf. format ( endDate) ) ; } if ( ! startTimeList. isEmpty ( ) && ! endTimeList. isEmpty ( ) ) { map. put ( "startTimeList" , startTimeList) ; map. put ( "endTimeList" , endTimeList) ; } } catch ( Exception e) { e. printStackTrace ( ) ; } return map; }