月份加一,这是Java的一个小Bug
取出月份参数,强制转换,再放回。
我们原来做项目的时候遇到过同样的问题。

解决方案 »

  1.   

    Java用0-11来表示1-12月,很多书上都特别提到的。楼上的说是bug,我不能同意。
      

  2.   

        int sYear=Integer.parseInt(strDateNow.substring(0,4));
        int sMonth=Integer.parseInt(strDateNow.substring(4,6))+1;
        int sDate=Integer.parseInt(strDateNow.substring(6,8))+1;
        Calendar todaysDate = new GregorianCalendar(sYear,sMonth,sDate);
        todaysDate.roll(Calendar.DATE,1);
        String year = String.valueOf(todaysDate.get(Calendar.YEAR));
        String month = String.valueOf(todaysDate.get(Calendar.MONTH)-1);
        String day = String.valueOf(todaysDate.get(Calendar.DATE)-1);
      

  3.   

    这业太麻烦了吧,如果取出当前时间(long)然后加上一天的时间(long).然后调用构造函数,不就行了吗?
      

  4.   

    以前做过一个作业,我做了个万年历
    那时候不知道 java 还有 日期的实用类,所以自己写了算法
    现在看来,虽然结果正确,但里面结构一塌糊涂
    哈哈哈
      

  5.   

    改成下面这样应该就可以了    public static String[] getNextDate(String strDateNow){
            String[] date=new String[3];
            int sYear=Integer.parseInt(strDateNow.substring(0,4));
            int sMonth=Integer.parseInt(strDateNow.substring(4,6));
            int sDate=Integer.parseInt(strDateNow.substring(6,8));
            Calendar todaysDate = new GregorianCalendar(sYear,(sMonth-1),sDate);
            todaysDate.roll(Calendar.DAY_OF_YEAR,1);
            String year = String.valueOf(todaysDate.get(Calendar.YEAR));
            String month = String.valueOf(todaysDate.get(Calendar.MONTH)+1);
            String day = String.valueOf(todaysDate.get(Calendar.DATE));
            if(month.length()==1){
                month="0"+month;
            }
            if(day.length()==1){
                day="0"+day;
            }
            date[0]=year;
            System.out.print(year);
            date[1]=month;
            System.out.print(month);
            date[2]=day;
            System.out.print(day);
            return date;
        }
      

  6.   

    又帮你改了改,试试这个吧:    public static String[] getNextDate(String strDateNow){
            String[] date=new String[3];
            int sYear=Integer.parseInt(strDateNow.substring(0,4));
            int sMonth=Integer.parseInt(strDateNow.substring(4,6));
            int sDate=Integer.parseInt(strDateNow.substring(6,8));
            Calendar todaysDate = new GregorianCalendar(sYear,(sMonth-1),sDate);
            todaysDate.setTime(new java.util.Date(todaysDate.getTime().getTime() + 1000*60*60*24));
            String year = String.valueOf(todaysDate.get(Calendar.YEAR));
            String month = String.valueOf(todaysDate.get(Calendar.MONTH)+1);
            String day = String.valueOf(todaysDate.get(Calendar.DATE));
            if(month.length()==1){
                month="0"+month;
            }
            if(day.length()==1){
                day="0"+day;
            }
            date[0]=year;
            date[1]=month;
            date[2]=day;
            return date;
        }
      

  7.   

    我这里有一个方便的方法,你试试看。要是不对在帮你修改,知道正确为止。
    在这里没有用Calendar类,因为感觉不方便。
    代码如下:
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class Tea
    {
    public static void main(String []args)
    {
    Date d=new Date();
    long time=24*60*60*1000;
    long bef=d.getTime();
    bef+=time;

    Date dd=new Date(bef);

    SimpleDateFormat s=new SimpleDateFormat("yyyy.MM.dd");

    System.out.println(s.format(dd));

    }
    }
    具体转化成什么格式就在simpleDateFormat中做好了,很方便的。