import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class DateUtils {
public static void main(String[] args) throws ParseException {
System.out.println("=====================求两个日期间的月份集合=======================");
List<String> month_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",1);
for(int i=0;i<month_lists.size();i++){
System.out.println(month_lists.get(i));
}
System.out.println("=====================求两个日期间的日集合=======================");
List<String> day_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",2);
for(int i=0;i<day_lists.size();i++){
System.out.println(day_lists.get(i));
}
System.out.println("=====================求两个日期间的小时集合=======================");
List<String> hour_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",3);
for(int i=0;i<hour_lists.size();i++){
System.out.println(hour_lists.get(i));
}
}
/*
* 求两个日期间的月份/日/小时集合
* params:startDateStr 开始时间
* @param endDateStr 结束时间
* @param type 时间粒度 1:月 2:日 3:小时
* @return List
*/
public static List<String> getBetweenTwoDateList(String startDateStr,String endDateStr,int type) throws ParseException{
List<String> list = new LinkedList<String>();
DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = simpleDateFormat.parse(startDateStr); // 开始日期
Date endDate = simpleDateFormat.parse(endDateStr); //结束日期
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
startCalendar.setTime(startDate);
endCalendar.setTime(endDate);
String result = null;
while (startCalendar.compareTo(endCalendar) <= 0) {
startDate = startCalendar.getTime();
switch(type){
case 1:
result = new SimpleDateFormat("yyyy-MM").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.MONTH, 1);
break;
case 2:
result = new SimpleDateFormat("yyyy-MM-dd").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个天直到等于结束日期为止
startCalendar.add(Calendar.DAY_OF_MONTH, 1);
break;
default:
result = new SimpleDateFormat("yyyy-MM-dd HH").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.HOUR, 1);
break;
}
}
return list;
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class DateUtils {
public static void main(String[] args) throws ParseException {
System.out.println("=====================求两个日期间的月份集合=======================");
List<String> month_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",1);
for(int i=0;i<month_lists.size();i++){
System.out.println(month_lists.get(i));
}
System.out.println("=====================求两个日期间的日集合=======================");
List<String> day_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",2);
for(int i=0;i<day_lists.size();i++){
System.out.println(day_lists.get(i));
}
System.out.println("=====================求两个日期间的小时集合=======================");
List<String> hour_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",3);
for(int i=0;i<hour_lists.size();i++){
System.out.println(hour_lists.get(i));
}
}
/*
* 求两个日期间的月份/日/小时集合
* params:startDateStr 开始时间
* @param endDateStr 结束时间
* @param type 时间粒度 1:月 2:日 3:小时
* @return List
*/
public static List<String> getBetweenTwoDateList(String startDateStr,String endDateStr,int type) throws ParseException{
List<String> list = new LinkedList<String>();
DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = simpleDateFormat.parse(startDateStr); // 开始日期
Date endDate = simpleDateFormat.parse(endDateStr); //结束日期
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
startCalendar.setTime(startDate);
endCalendar.setTime(endDate);
String result = null;
while (startCalendar.compareTo(endCalendar) <= 0) {
startDate = startCalendar.getTime();
switch(type){
case 1:
result = new SimpleDateFormat("yyyy-MM").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.MONTH, 1);
break;
case 2:
result = new SimpleDateFormat("yyyy-MM-dd").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个天直到等于结束日期为止
startCalendar.add(Calendar.DAY_OF_MONTH, 1);
break;
default:
result = new SimpleDateFormat("yyyy-MM-dd HH").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.HOUR, 1);
break;
}
}
return list;
}
}