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

inf*_*ero 2 java android calendar compare date

我想将当前系统日期与修复日期进行比较,但得到错误的结果.通过尝试找出错误,我结束了以下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 );
Run Code Online (Sandbox Code Playgroud)

调试器中的结果是:

currSystem:1282160371775
deltaChanged1:1209600009
deltaChanged2:6480000009
deltaOlder:9
deltaSystem:-25
isAfter1:false
isAfter2:false
isBefore1:true isBefore2:true milliChanged1:1283369971809
milliChanged2:1288640371809
milliOlder:1282160371809
milliToday:1282160371800

deltaOlder和deltaSystems的小差异是由于执行时间,这没有问题.但是今天(8月18日)和第一个设定日期(8月1日)的比较结果是错误的IMO.isAfter1应为true且isBefore1应为false; 与第二个设定日期(10月1日)的比较是可以的.

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

Kev*_*ell 5

在Calendar对象中,month是从0开始的,因此August应该是7,而October应该是9.

因此,您只需要更改"集合"以获得正确的数字,它应该可以正常工作.

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

// 1st of October 2010
calFix.set( 2010, 9, 1 ); 
Run Code Online (Sandbox Code Playgroud)