日期问题:String="200602",求增加月份,得到结果 String 类型 200603这样的结果
用过Calendar 搞来搞去都没搞出结果,有人知道如何得到这样的结果吗,我需要的类功能是随意增加月份。

解决方案 »

  1.   

    给你个非常规方法:public String getNextMonth(String str)
    {
       String monthstr=str.substring(5,6);
       int i_mon=Integer.parseInt(monthstr);
       i_mon++;
       if(i_mon>12) return str.substring(0,4)+"01";
       if(i_mon<10) return str.substring(0,4)+"0"+String.valueOf(i_mon);
       else return str.substring(0,4)+ String.valueOf(i_mon);
    }
      

  2.   

    楼上的狠,万一哪天历法变了,一年有13个月呢?
    String s="200602";
    DateFormat df=new SimpleDateFormat("yyyyMM");
    Calendar cal=Calendar.getInstance();
    cal.setTime(df.parse(s));
    cal.add(Calendar.MONEH,1);//月份加1
    System.out.println(df.format(cal.getTime());
      

  3.   

    在二楼基础上改进了一下,:)
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class CSDN1 {

    public static void main(String[] args) {
    String s = "200602";
    DateFormat df = new SimpleDateFormat("yyyyMM");
    Calendar cal = Calendar.getInstance();
    try {
    cal.setTime(df.parse(s));
    } catch (ParseException e) {
    e.printStackTrace();
    }
    cal.add(Calendar.MONTH, 1);// 月份加1
    System.out.println(df.format(cal.getTime()));
    }
    }
      

  4.   

    String oldDate = "200601";
    String pattern = "yyyyMM";
    Date formatDate = null;
    SimpleDateFormat formatter = new SimpleDateFormat(pattern);
            try {
                formatDate = formatter.parse(oldDate);
            }
            catch (Exception e) {
                throw new RuntimeException(e.getMessage());
            }
    Calendar cal = new GregorianCalendar();
    cal.setTime(formatDate);
    cal.add(Calendar.MONTH, 5);
    Date newDate = cal.getTime();
      

  5.   

    public static void main(String[] args){

    System.out.println(getDate("200602",34));
    }

    public static String getDate(String strDate , int intMonth){ int month = Integer.parseInt(strDate.substring(4,6));
    int year = Integer.parseInt(strDate.substring(0,4));
    month += intMonth;
    for(;month>12;){
    month -= 12;
    year++;
    }
    return String.valueOf(year)+String.valueOf(getMM(month));

    }
    public static String getMM(int intMM){
    String strMM = "";
    strMM = String.valueOf(intMM);
    if(strMM.length()==1){
    strMM = "0" + strMM;
    }
    return strMM;
    }
      

  6.   

    谢谢各位,我是楼主,这是我参照网上代码改的代码 不过格式限定得很死,请各位补充下更完善。
    /*增加月份公用类*/
        private static Date add(Date date, int amount, int field) {
            Calendar calendar = Calendar.getInstance();        calendar.setTime(date);
            calendar.add(field, amount);        return calendar.getTime();
        }
        //传入参数格式必须为2006-04-03,否则出错
        //输出格式为2006-05-03
        public static String addMonthsLong(String s,int months) {
            java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd");
            Date myTime=null;
            try{
                myTime = df.parse(s);
            }catch(Exception e){
            }
            Date nextMonth = add(myTime, months, Calendar.MONTH);
            String mytime = df.format(nextMonth);
            return mytime;    }
        //传入参数格式必须为200604,否则出错
        //输出格式为200605
        public static String addMonthsShort(String s,int months) {
            java.text.SimpleDateFormat df=new java.text.SimpleDateFormat("yyyyMM");
            Date myTime=null;
            try{
                myTime = df.parse(s);
            }catch(Exception e){
            }
            Date nextMonth = add(myTime, months, Calendar.MONTH);
            String mytime = df.format(nextMonth);
            return mytime;    }
     /*增加月份公用类*/