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日)的比较是可以的.
在比较两个日期的简单事情中,我做错了什么?
在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)