【发布时间】:2010-08-18 20:00:55
【问题描述】:
我想将当前系统日期与修复日期进行比较,但得到了错误的结果。通过尝试找出问题所在,我以以下 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
deltaOlder:9
deltaSystem: -25
isAfter1: false
isAfter2:假
isBefore1:真
isBefore2: 真
milliChanged1:1283369971809
milliChanged2:1288640371809
毫老:1282160371809
毫今日:1282160371800
deltaOlder 和 deltaSystems 的细微差别是由于执行时间,这没问题。 但是今天(8 月 18 日)和第一个设定日期(8 月 1 日)的比较结果是错误的 IMO。 isAfter1 应该为真,isBefore1 应该为假; 与第二个设定日期(10 月 1 日)的比较是可以的。
在比较两个日期的简单事情中我做错了什么?
【问题讨论】:
标签: java android date calendar compare