-1

我正在比较 java 中的 2 个日历对象。这是我设置它们的方式

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

我从表列“2012-07-17 13:00:00”中获取以下值并将其设置为 Date Java 对象,然后我使用此 Date 对象设置第二个 Calander 对象。

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

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

calendar2.compareTo(calendar1) >= 0

但相反,我看到这正在成为现实

calendar2.compareTo(calendar1) < 0

有人可以帮忙吗?

4

3 回答 3

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));

试运行结果:

2012 年 7 月 17 日星期二 13:00:47 CDT
2012 年 7 月 17 日星期二 13:00:00 CDT
-1
0
于 2012-07-15T03:54:03.753 回答
0

在@Bhesh Gurung 的建议下,我使用了以下内容

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

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

它奏效了。

于 2012-07-15T04:07:07.897 回答
0
于 2018-04-23T05:38:32.270 回答