Java Android中比较两个日历日期的问题

Java Android中比较两个日历日期的问题,java,android,date,calendar,compare,Java,Android,Date,Calendar,Compare,我想将当前系统日期与固定日期进行比较,但结果不正确。通过尝试找出问题所在,我以以下Java代码结束: // today, 18th of August 2010 long currSystem = System.currentTimeMillis(); Calendar calToday = Calendar.getInstance(); Calendar calFix = Calendar.getInstance(); long milliToday =

我想将当前系统日期与固定日期进行比较,但结果不正确。通过尝试找出问题所在,我以以下Java代码结束:

    // today, 18th of August 2010
    long currSystem = System.currentTimeMillis();
    Calendar calToday = Calendar.getInstance();
    Calendar calFix = Calendar.getInstance();
    long milliToday = calToday.getTimeInMillis();
    long milliOlder = calFix.getTimeInMillis();
    long deltaOlder = milliOlder - milliToday;
    long deltaSystem = currSystem - milliToday;

    // 1st of August 2010
    calFix.set( 2010, 8, 1 );
    long milliChanged1 = calFix.getTimeInMillis();
    long deltaChanged1 = milliChanged1 - milliToday;
    boolean isAfter1 = calToday.after( calFix );
    boolean isBefore1 = calToday.before( calFix );

    // 1st of October 2010
    calFix.set( 2010, 10, 1 ); 
    long milliChanged2 = calFix.getTimeInMillis();
    long deltaChanged2 = milliChanged2 - milliToday;
    boolean isAfter2 = calToday.after( calFix );
    boolean isBefore2 = calToday.before( calFix );
调试器中的结果是:

货币系统:1282160371775
deltaChanged1:1209600009
deltaChanged2:6480000009
德尔陶尔德:9
deltaSystem:-25
Isafter 1:false
isAfter2:false
isBefore1:true isBefore2:对 微变化1:1283369971809
微变化2:1288640371809
百万富翁:1282160371809
百万美元今天:1282160371800

deltaOlder和deltaSystems的微小差异是由于执行时间,这没有问题。 但是今天(8月18日)和第一个设定日期(8月1日)的比较结果在国际海事组织看来是错误的。isAfter1应该为真,isBefore1应该为假; 与第二个设定日期(10月1日)的比较是可以的


在比较两个日期这件简单的事情中,我做错了什么?

在日历对象中,月份是以0为基础的,所以8月应该是7日,10月应该是9日

因此,您只需更改“集合”以获得正确的数字,它就可以正常工作

// 1st of August 2010
calFix.set( 2010, 7, 1 );

// 1st of October 2010
calFix.set( 2010, 9, 1 ); 

谢谢,我没有想到会有这样的答案,因为我有C#背景,而不是Java。但是从0开始这个月让我很惊讶。一周中的某一天以0为基础是可以的,但是这个月呢?!为什么一周中的某一天以0为基础多少有点道理?@infero我同意。这是违反直觉的。它应该全部以0为基数或者全部以1为基数。@AHungerArtist,因为我们也使用数字表示月份和月份,并且在真实生活中我们都从1开始。但对于一周中的某一天,有两种“制度”:美国人从星期天开始,欧洲人从星期一开始作为一周的第一天。那么,为什么要让世界变得更加复杂呢?