java - 为什么我的日期不能正确添加天数?

标签 java date-arithmetic gregorian-calendar

我尝试向 2010 年 1 月 1 日这一日期添加随机天数,以使新日期介于当时和今天(2013 年 12 月 2 日)之间。两个日期之间的总天数是 1431。我用 Google 搜索了如何执行此操作,发现添加小时数,只需使用 HOUR 字段。但是,当我尝试使用 DATE 字段时,我得到的年份远远超出了预期范围。

import java.util.Random;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class DateArithmetic{
    public static void main(String[] args){
            Random random = new Random();
            Calendar gc = new GregorianCalendar(2010, Calendar.JANUARY, 1, 0, 0, 1);

            System.out.println(gc.getTime());

            for(int i=0; i<100; i++){
                    gc.add(GregorianCalendar.DATE, random.nextInt(1431));
                    System.out.println(gc.getTime());
            }
    }
}

最佳答案

您正在将随机天数添加到相同 Calendar 对象中 100 次。这是有道理的,它几乎会立即超越今天进入 future 。

在每次循环时将 GregorianCalendar 对象重新初始化为初始日期。

关于java - 为什么我的日期不能正确添加天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333562/

相关文章:

java - 在 GregorianCalendar ArrayList Java 中添加日期元素

java - 由另一个进程启动时将系统属性传递给 tomcat 管理的 webapp

sql - 用于查找超过 30 天的日期记录的 Oracle SQL Where 子句

sql - oracle sql 中的迄今为止的字符

mysql - 为什么 1582 中的两个 MySQL 日期看起来相同,但比较结果是错误的?

java - 我应该为生日字段使用 GregorianCalendar 还是 Date?

java - informix DB 上的 ROW_NUMBER() 显示不支持 BIGINT

java - 强化 : Null dereference for Java 8

java - 在java中的所有程序上使用一个字符串?

sql - 一个月的天数