2012-07-15 111 views
-1

我正在比较java中的2个日历对象。这种方式我设置他们每个人java日历比较不正确

Calendar calendar1 = Calendar.getInstance(); 
calendar1.set(2012, 6, 17, 13, 0); 

的,我正从表列“2012-07-17 13:00:00”下面的值,并将其设置为日期的Java对象,然后此Date对象我正在使用设置第二个Calander对象。

Calendar calendar2 = Calendar.getInstance(); 
calendar2.setTime(/*Above date object who value is '2012-07-17 13:00:00'*/); 

现在,当我比较我希望这是真的,因为这两个日历对象相同

calendar2.compareTo(calendar1) >= 0 

而是我看到这是成为真正的

calendar2.compareTo(calendar1) < 0 

有人可以帮助?

+1

返回的日历基于默认语言环境的默认时区中的**当前时间**。 http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getInstance%28%29 – 2012-07-15 03:10:34

+1

'calendar1.set(2012,6,17,13,0);'only上升到分钟字段,而秒和毫秒不被设置为0. – 2012-07-15 03:19:43

+0

那么我该如何设置第二个广告毫秒? – user1241438 2012-07-15 03:37:32

回答

1

下面将为你发生了什么事情(假设你解析字符串来产生calendar1日期对象)的想法:

Calendar calendar1 = Calendar.getInstance(); 
calendar1.set(2012, 6, 17, 13, 0); 
System.out.println(calendar1.getTime()); 
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-07-17 13:00:00"); 
System.out.println(date); 
Calendar calendar2 = Calendar.getInstance(); 
calendar2.setTime(date); 
System.out.println(calendar2.compareTo(calendar1)); 
calendar1.set(Calendar.SECOND, 0); //setting second to 0 
calendar1.set(Calendar.MILLISECOND, 0); //setting millisecond to 0 
System.out.println(calendar2.compareTo(calendar1)); 

试运行结果:

 
Tue Jul 17 13:00:47 CDT 2012 
Tue Jul 17 13:00:00 CDT 2012 
-1 
0 
0

经过@Bhesh Gurung的建议,我使用了以下内容:

calendar1.set(Calendar.MILLISECOND,0); calendar1.set(Calendar.SECOND,0);

calendar2.set(Calendar.MILLISECOND,0); calendar2.set(Calendar.SECOND,0);

它工作。