求解几个日期方法:每月第一天,最后一天,指定时间段内的所有日期序列。解决方法

求解几个日期方法:每月第一天,最后一天,指定时间段内的所有日期序列。
如题,求解几个日期操作的方法:
1.每月的第一天:输入一个   yyyy-MM-dd   格式的日期,返回该月的第一天的yyyy-MM-dd格式的字符串。

2.每月的最后一天:输入一个   yyyy-MM-dd   格式的日期,返回该月的最后一天的yyyy-MM-dd格式的字符串。例如   2007-02-28   闰年则是   2008-02-29  

3.指定时间段内的所有日期序列:例如输入   2007-08-29   ,2007-09-02,则返回
    2007-08-29,2007-08-30,2007-08-31,,,2007-09-02   的List   或String[]

请大侠们支招。百分感谢。

------解决方案--------------------
public class DateTime
{
public DateTime()
{
}

/**
* 取年日期时间
* @return String 返回 yyyy-MM-dd
*/
public static String getdate(Date date) {
java.text.SimpleDateFormat formatter_f = new java.text.SimpleDateFormat(
"yyyy-MM-dd ");

String new_date_f = formatter_f.format(date); //将日期时间格式化
return new_date_f;
}
------解决方案--------------------
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

public class Test {

  private static SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd ");
  
  public static void main(String[] args) throws ParseException {    
    Date date = sdf.parse( "2007-09-25 ");
    Date date2 = sdf.parse( "2007-10-2 ");
    
    System.out.println(sdf.format(getFirstMonthDay(date)));
    System.out.println(sdf.format(getLastMonthDay(date)));
    
    List <Date> list = getAllDates(date, date2);
    
    for(Date d : list) {
      System.out.println(sdf.format(d));
    }    
  }
  
  public static Date getFirstMonthDay(Date date) {
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));
    return calendar.getTime();
  }
  
  public static Date getLastMonthDay(Date date) {
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    return calendar.getTime();
  }
  
  public static List <Date> getAllDates(Date start, Date end) {
    Calendar calendar1 = new GregorianCalendar();
    calendar1.setTime(start);
    Calendar calendar2 = new GregorianCalendar();
    calendar2.setTime(end);
    List <Date> list = new ArrayList <Date> ();
    list.add(start);
    while(calendar1.compareTo(calendar2) < 0) {
      calendar1.add(Calendar.DATE, 1);
      list.add(calendar1.getTime());
    }
    return list;
  }
}
------解决方案--------------------
在火龙果程序里面加个这个
public static List <Date> getMonths(Date start, Date end) {
Calendar calendar1 = new GregorianCalendar();
calendar1.setTime(start);
Calendar calendar2 = new GregorianCalendar();
calendar2.setTime(end);
List <Date> list = new ArrayList <Date> ();
while (calendar1.compareTo(calendar2) < 0) {
list.add(calendar1.getTime());
calendar1.add(Calendar.MONTH, 1);
}
list.add(calendar1.getTime());
return list;
}

在main里面加个
List <Date> list2 = getMonths(date, date2);
SimpleDateFormat sdf2 = new SimpleDateFormat( "yyyy-MM ");
for (Date d : list2) {
System.out.println(sdf2.format(d));