java - 将年份添加到 Java 日历不起作用

标签 java calendar

请赐教:

我只是想在当前日期上加上 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/

相关文章:

reactjs - 如何使用 React 和 Material-UI 嵌入 Calendly anchor 标记

excel - 是否可以将桌面的日期连接到 Microsoft Excel?

silverlight - 检测何时在 Silverlight 日历控件上单击某一天

java - Hibernate 4.0 的 MultiTenancy 和 Separate Schema 方法

java - 工具在 Eclipse 插件开发中延迟输出

Java:如何从 HTML 标签中剥离文本内容?

java - 在运行时找不到用于 BlazeDS 通信的 Actionscript 类

android - 从日历中减去天数

java - calendar.getDisplayName 返回错误的日期

java - Mockito - 如何监视 doAnswer 中的调用参数