如题,求解几个日期操作的方法:
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[]请大侠们支招。百分感谢。

解决方案 »

  1.   

    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; 
    }
      

  2.   

    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;
      }
    }
      

  3.   

    楼上的 bao110908(火龙果) 很专业啊。谢谢。
      

  4.   

    另外再多问一个4.指定时间段内的所有月份序列:例如输入 2007-06-29 ,2007-09-02,则返回
      2007-06,2007-07,2007-08,2007-09 的List 或String[]
      

  5.   

    在火龙果程序里面加个这个
    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));
    }嘿~~
      

  6.   

    谢谢给分~~~ 返回的最好是 Date 类型的,不要返回 String 类型的,让调用者来进行处理。