我遇到了日历后的方法怪异的错误。下面的代码需要当前时间,并且应该在同一时间返回明天的日期。当您使用当前时间运行代码时,会发生此错误。任何想法发生了什么?Java日历的方法返回不一致的结果 - 任何想法?
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Vector;
public class NextDateTest {
public static void main(String[] args) {
Vector<Object> setup = new Vector<Object>();
Calendar dt = Calendar.getInstance();
SimpleDateFormat hour = new SimpleDateFormat("HH");
SimpleDateFormat minute = new SimpleDateFormat("mm");
setup.add(hour.format(dt.getTime()));
setup.add(minute.format(dt.getTime()));
for(int a=0; a<11; a++){
dateTest(setup);
}
}
static void dateTest(Vector<Object> vec){
Calendar dt = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");
System.out.println("Old time:" + format.format(dt.getTime()));
dt.set(Calendar.HOUR_OF_DAY, Integer.valueOf((String) vec.elementAt(0)));
dt.set(Calendar.MINUTE, Integer.valueOf((String) vec.elementAt(1)));
System.out.println(Calendar.getInstance().after(dt));
if(Calendar.getInstance().after(dt)){
dt.add(Calendar.DAY_OF_YEAR, +1);
}
System.out.println("New time:" + format.format(dt.getTime()));
}
}
结果:
Old time:12/19/2011 10:38
true
New time:12/20/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/19/2011 10:38
Old time:12/19/2011 10:38
true
New time:12/20/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/19/2011 10:38
Old time:12/19/2011 10:38
true
New time:12/20/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/19/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/20/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/19/2011 10:38
Old time:12/19/2011 10:38
true
New time:12/20/2011 10:38
Old time:12/19/2011 10:38
false
New time:12/19/2011 10:38
Old time:12/19/2011 10:38
true
New time:12/20/2011 10:38
为什么你要传递对象的矢量,解析字符串等?你的测试代码看起来比它应该更复杂。你为什么要执行11次? – 2011-12-19 16:02:27
你知道日历有一个'.add()'方法吗? – fge 2011-12-19 16:06:30
@fge:他或她在说,所以是的,我会说他的确如此。 :-) – ruakh 2011-12-19 16:11:33