Calendar类的方法:add
public abstract void add(int field,
                         int amount)
Date Arithmetic function. Adds the specified (signed) amount of time to the given time field, based on the calendar's rules. For example, to subtract 5 days from the current time of the calendar, you can achieve it by calling: 
add(Calendar.DATE, -5). 
Parameters:
field - the time field.
amount - the amount of date or time to be added to the field.
这是api

解决方案 »

  1.   

    import java.util.*;
    import java.text.*;
        /**
         * 获取指定日期相差指定天数的日期
         * @param strDate 格式 yyyy-MM-dd
         * @param nCount 相差天数 可以有正负 
         * @return
         */
        public static String getNeedDate(String strDate,int nCount){
    GregorianCalendar worldTour
    = new GregorianCalendar(Integer.parseInt(strDate.substring(0,4)),
    Integer.parseInt(strDate.substring(5,7))-1,
    Integer.parseInt(strDate.substring(8)));
    worldTour.add(GregorianCalendar.DATE, nCount);
    Date d = worldTour.getTime();
    SimpleDateFormat df=new SimpleDateFormat ("yyyy-MM-dd");
    return df.format(d);
        }
      

  2.   

    对于当前日期public static String getNeedDate(int nCount){
    GregorianCalendar worldTour = new GregorianCalendar();
    worldTour.add(GregorianCalendar.DATE, nCount);
    Date d = worldTour.getTime();
    SimpleDateFormat df=new SimpleDateFormat ("yyyy-MM-dd");
    return df.format(d);
        }
      

  3.   

    这是我写的一个类专门处理有关时间的问题
    package pbcenter.util;import java.util.Calendar;
    import java.sql.Date;
    import java.text.SimpleDateFormat;
    import java.text.ParseException;/**
     * Utility to date time
     * @version 0.1
     * @author Super Zhao
     */
    public class DateTimeUtil {

    /**
     * 由java.util.Date到java.sql.Date的类型转换
     * @param date
     * @return Date
     */
    public static Date getSqlDate(java.util.Date date){
    return new Date(date.getTime());
    }

    public static Date nowDate(){
    Calendar calendar=Calendar.getInstance();
    return getSqlDate(calendar.getTime());
    }

    /**
     * 获得某一日期的后一天
     * @param date
     * @return Date
     */
    public static Date getNextDate(Date date){
    Calendar calendar=Calendar.getInstance();
    calendar.setTime(date);
    int day=calendar.get(Calendar.DATE);
    calendar.set(Calendar.DATE,day+1);
    return getSqlDate(calendar.getTime());
    }

    /**
     * 获得某一日期的前一天
     * @param date
     * @return Date
     */
    public static Date getPreviousDate(Date date){
    Calendar calendar=Calendar.getInstance();
    calendar.setTime(date);
    int day=calendar.get(Calendar.DATE);
    calendar.set(Calendar.DATE,day-1);
    return getSqlDate(calendar.getTime());
    }

    /**
     * 获得某年某月第一天的日期
     * @param year
     * @param month
     * @return Date
     */
    public static Date getFirstDayOfMonth(int year,int month){
    Calendar calendar=Calendar.getInstance();
    calendar.set(Calendar.YEAR,year);
    calendar.set(Calendar.MONTH,month-1);
    calendar.set(Calendar.DATE,1);
    return getSqlDate(calendar.getTime());
    }

    /**
     * 获得某年某月最后一天的日期
     * @param year
     * @param month
     * @return Date
     */
    public static Date getLastDayOfMonth(int year,int month){
    Calendar calendar=Calendar.getInstance();
    calendar.set(Calendar.YEAR,year);
    calendar.set(Calendar.MONTH,month);
    calendar.set(Calendar.DATE,1);
    return getPreviousDate(getSqlDate(calendar.getTime()));
    }

    /**
     * 由年月日构建java.sql.Date类型
     * @param year
     * @param month
     * @param date
     * @return Date
     */
    public static Date buildDate(int year,int month,int date){
    Calendar calendar=Calendar.getInstance();
    calendar.set(year,month-1,date);
    return getSqlDate(calendar.getTime());
    }

    /**
     * 取得某月的天数
     * @param year
     * @param month
     * @return int
     */
    public static int getDayCountOfMonth(int year,int month){
    Calendar calendar=Calendar.getInstance();
    calendar.set(Calendar.YEAR,year);
    calendar.set(Calendar.MONTH,month);
    calendar.set(Calendar.DATE,0);
    return calendar.get(Calendar.DATE);
    }

    /**
     * 获得某年某季度的最后一天的日期
     * @param year
     * @param quarter
     * @return Date
     */
    public static Date getLastDayOfQuarter(int year,int quarter){
    int month=0;
    if(quarter>4){
    return null;
    }else{
    month=quarter*3;
    }
    return getLastDayOfMonth(year,month);

    }

    /**
     * 获得某年某季度的第一天的日期
     * @param year
     * @param quarter
     * @return Date
     */
    public static Date getFirstDayOfQuarter(int year,int quarter){
    int month=0;
    if(quarter>4){
    return null;
    }else{
    month=(quarter-1)*3+1;
    }
    return getFirstDayOfMonth(year,month);
    }

    /**
     * 获得某年的第一天的日期
     * @param year
     * @return Date
     */
    public static Date getFirstDayOfYear(int year){
    return getFirstDayOfMonth(year,1);
    }

    /**
     * 获得某年的最后一天的日期
     * @param year
     * @return Date
     */
    public static Date getLastDayOfYear(int year){
    return getLastDayOfMonth(year,12);
    }

    /**
     * String到java.sql.Date的类型转换
     * @param param
     * @return Date
     */
    public static java.sql.Date StringToDate(String param) {
    if(StringUtil.nullOrBlank(param)) {
    return null;
    } else {
    java.util.Date date =null;
    try {
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    date = sdf.parse(param);
    return new Date(date.getTime());
    }
    catch (ParseException ex) {
    //ex.printStackTrace();
    return null;
    }
    }
    }
    }
      

  4.   

    ZeroC(笨小孩)写的不错,不仅代码写的好,而且代码也很规范
      

  5.   

    用getTime()来取的毫秒数
    然后运算
    再用SimpleDateFormat来格式化输出
      

  6.   

    弟兄们这么热情,我都不好意思给这么点分了
    再加一些吧
    :)
    我用System.currentTimeMillis()取出的时间,好象不是本地时间,而是格林威治标准时间
    那样的话,如果对应本地时间,就要再加上8个小时
    怎么直接取出本地的标准时间
      

  7.   

    弟兄们这么热情,我都不好意思给这么点分了
    再加一些吧
    :)
    我用System.currentTimeMillis()取出的时间,好象不是本地时间,而是格林威治标准时间
    那样的话,如果对应本地时间,就要再加上8个小时
    怎么直接取出本地的标准时间
    不是的,其实取出的时间是你系统时钟的时间