请赐教:
我只是想在当前日期上加上 10 年,然后从中减去到期日期以返回年数:
public int getMaxYears() {
int max = 0;
Calendar ten_year_later = Calendar.getInstance();
ten_year_later.setTime(new Date());
ten_year_later.add(Calendar.YEAR, 10);
Calendar expiration = Calendar.getInstance();
expiration.setTime(expiration_date);
max = (int) (ten_year_later.getTimeInMillis() - expiration.getTimeInMillis())/(365 * 24 * 60 * 60 * 1000);
return max;
}
当我调试它时,日历总是停留在当年。
有人吗?
最佳答案
你的int/long转换有问题:365 * 24 * 60 * 60 * 1000
计算结果为 31536000000,因此超过 Integer.MAX_VALUE
2147483647
这有效:
public static void main(String[] args) {
Calendar ten_year_later = Calendar.getInstance();
System.out.println( ten_year_later.getTime() );
ten_year_later.setTime(new Date());
ten_year_later.add(Calendar.YEAR, 10);
System.out.println( ten_year_later.getTime() );
Calendar expiration = Calendar.getInstance();
expiration.setTime(expiration.getTime());
long max = (ten_year_later.getTimeInMillis() - expiration.getTimeInMillis())/(365 * 24 * 60 * 60 * 1000L);
System.out.println( "max " + max );
}
关于java - 将年份添加到 Java 日历不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3883167/