获取开始日期与结束日期之间每天的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;
}