日期:2014-05-18  浏览次数:20652 次

在线急等,关于日期的一个问题
package   com.mrpsoft.common;

import   java.util.Calendar;
import   java.util.Date;
import   java.util.GregorianCalendar;
import   java.util.StringTokenizer;


public   class   MyDate   {

public   static   String   getDate(String   spDate,   int   dayId){
long   baseTime;
StringTokenizer   st   =   new   StringTokenizer(spDate,   "- ");

try{
int   year   =   Integer.parseInt(st.nextToken());
int   month   =   Integer.parseInt(st.nextToken());
int   day   =   Integer.parseInt(st.nextToken());
Calendar   calCur   =   new   GregorianCalendar();
calCur.set(Calendar.YEAR,   year);
calCur.set(Calendar.MONTH,   month-1);
calCur.set(Calendar.DAY_OF_MONTH,   day);
Date   sp   =   calCur.getTime();
baseTime   =   sp.getTime();
//System.out.println(baseTime);
//System.out.println(System.currentTimeMillis());
}catch(Exception   e){
System.err.println( "指定的日期格式不正确。 ");
baseTime   =   System.currentTimeMillis();
}

int   daymillis   =   24*60*60*1000;
Date   myDate   =   new   Date(baseTime+daymillis*(dayId-1));
Calendar   calCur   =   Calendar.getInstance();
calCur.setTime(myDate);    
int   day   =   calCur.get(Calendar.DAY_OF_MONTH);
calCur.add(Calendar.MONTH,1);
int   month   =   calCur.get(Calendar.MONTH);
String   date   =   month+ "月 "+day+ "日 ";

System.out.println(date);
return   date;
}

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {

getDate( "2007-2-28 ",   3);   //这里放你算的第几天,返回就是当前日期的后几天

}

}

以上页面编译后出现几个问题,1、是取不到jsp页面赋予的日期值,在页面上总是按照当前系统时间显示;2、应该是以当前时间为准向后递增,可却取当前日期的前一天向后递增!请高手帮手


------解决方案--------------------
按照你提供的程序我运行了一下,运行结果:3月2号。

你想返回的是:3月3号?

如果是那样的话:
Date myDate = new Date(baseTime+daymillis*(dayId-1));改为Date myDate = new Date(baseTime+daymillis*(dayId));就可以了啊。

至于你说的第一个问题应该是你下面的这段程序发生了异常:
int year = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken());
int day = Integer.parseInt(st.nextToken());
Calendar calCur = new GregorianCalendar();
calCur.set(Calendar.YEAR, year);
calCur.set(Calendar.MONTH, month-1);
calCur.set(Calendar.DAY_OF_MONTH, day);
Date sp = calCur.getTime();
baseTime = sp.getTime();
//System.out.println(baseTime);
//System.out.println(System.currentTimeMillis());


程序执行了catch中的代码,应该是你页面传递进来的日期字符串有问题,你可以跟踪一下程序的执行过程。