gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 07:40:56 24 4
gpt4 key购买 nike

我想将当前系统日期与固定日期进行比较,但得到了错误的结果。通过尝试找出问题所在,我以以下 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
增量系统:-25
isAfter1: false
isAfter2: 假
isBefore1:真isBefore2:真milliChanged1: 1283369971809
milliChanged2:1288640371809
milliOlder: 1282160371809
毫今日:1282160371800

deltaOlder 和 deltaSystems 的细微差别是由于执行时间,这没问题。但是今天(8 月 18 日)和第一个设定日期(8 月 1 日)的比较结果是错误的 IMO。 isAfter1 应该为真,isBefore1 应该为假;与第二个设定日期(10 月 1 日)的比较就可以了。

任何关于我在比较两个日期的简单事情中做错了什么的建议?

最佳答案

在 Calendar 对象中,月份是从 0 开始的,所以八月应该是 7,十月应该是 9。

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

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

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

关于java - 在 Android 中比较两个日历日期的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com