Date date1 = new Date();        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date1);
               
        calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),
                     calendar.get(Calendar.DAY_OF_MONTH),0,0,0 );        Date start_time = calendar.getTime();
        // 3 月后
        calendar.add(Calendar.MONTH, 3);
        calendar.add(Calendar.MILLISECOND, -1000);
        Date end_time = calendar.getTime();
        
        System.out.println( "当前时间  : " + date1.toString() );
        System.out.println("Start time: " + start_time.toString());
        System.out.println("End   time:" + end_time.toString());

解决方案 »

  1.   

    当前时间  : Mon Nov 01 12:56:59 CST 2004
    Start time: Mon Nov 01 00:00:00 CST 2004
    End   time:Mon Jan 31 23:59:59 CST 2005
      

  2.   

    /*
     * 作成日: 2004/11/01
     *
     * TODO この生成されたファイルのテンプレートを変更するには次へジャンプ:
     * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
     */
    package date;import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;/**
     * @author Administrator
     *
     * TODO この生成された型コメントのテンプレートを変更するには次へジャンプ:
     * ウィンドウ - 設定 - Java - コード・スタイル - コード・テンプレート
     */
    public class DateSE { public static void main(String[] args) {

    // '2004-10-20 12:13:15'
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, 2004);
    c.set(Calendar.MONTH, 9);
    c.set(Calendar.DAY_OF_MONTH, 20);
    c.set(Calendar.HOUR_OF_DAY, 12);
    c.set(Calendar.MINUTE, 13);
    c.set(Calendar.SECOND, 15);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

    String now = sdf.format(c.getTime());
    System.out.println("now = [" + now + "]");
    // start_time = "2004-11-01 00:00:00"; 
    // end_time = "2005-01-31 23:59:29";

    System.out.println("StartDay = [" + sdf.format(getStartDay(c.getTime())) + "]");
    System.out.println("getEndDaty = [" + sdf.format(getEndDaty(c.getTime())) + "]");

    }

    public static Date getStartDay(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.add(Calendar.MONTH, 1);
    c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
    c.set(Calendar.HOUR_OF_DAY, c.getActualMinimum(Calendar.HOUR_OF_DAY));
    c.set(Calendar.MINUTE, c.getActualMinimum(Calendar.MINUTE));
    c.set(Calendar.SECOND, c.getActualMinimum(Calendar.SECOND));
    return c.getTime();
    }

    public static Date getEndDaty(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.add(Calendar.MONTH, 3);
    c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
    c.set(Calendar.HOUR_OF_DAY, c.getActualMaximum(Calendar.HOUR_OF_DAY));
    c.set(Calendar.MINUTE, c.getActualMaximum(Calendar.MINUTE));
    c.set(Calendar.SECOND, c.getActualMaximum(Calendar.SECOND));
    return c.getTime();
    }

    }