Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的日期不能正确设置为未来的30天?_Java_Date - Fatal编程技术网

Java 为什么我的日期不能正确设置为未来的30天?

Java 为什么我的日期不能正确设置为未来的30天?,java,date,Java,Date,我有以下资料: Date now = new Date(); Date futureDate = new Date(now.getYear(), now.getMonth(), now.getDay() + 30); 我想根据当前日期,将未来日期值设置为未来30天 调试时,现在是正确的日期,未来的日期是: Sat Jan 05 00:00:00 EST 2013 今天的日期,now的值是:美国东部时间2012年12月29日星期六17:31:58 这对我来说没有意义 我使用ut

我有以下资料:

    Date now = new Date();
    Date futureDate = new Date(now.getYear(), now.getMonth(), now.getDay() + 30);
我想根据当前日期,将未来日期值设置为未来30天

调试时,现在是正确的日期,未来的日期是:

Sat Jan 05 00:00:00 EST 2013
今天的日期,now的值是:美国东部时间2012年12月29日星期六17:31:58

这对我来说没有意义

我使用util.Date.

因为getDay返回的是一周中的某一天,而不是一个月中的某一天

那么你的

now.getDay() + 30
变成周六+30=6+30=36十二月=1月5日

快速修复方法是将代码替换为:

now.getDate() + 30
但正如其他人已经建议的那样,java.util.Date有点不推荐使用。您应该使用Calendar.add。因此,您的代码将类似于:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +30);
因为getDay返回的是一周中的某一天,而不是一个月中的某一天

那么你的

now.getDay() + 30
变成周六+30=6+30=36十二月=1月5日

快速修复方法是将代码替换为:

now.getDate() + 30
但正如其他人已经建议的那样,java.util.Date有点不推荐使用。您应该使用Calendar.add。因此,您的代码将类似于:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +30);

您应该使用Calendar及其方法。add

您应该使用Calendar及其方法。add

不仅是该构造函数已弃用,而且它只接受1-31天的有效日期


尝试改用java.util.Calendar。

该构造函数不仅不推荐使用,而且只接受1-31天的有效日期

请尝试改用java.util.Calendar。

日期不应用于此类计算

看看哪一个是这些事情的例外。

日期不应用于此类计算


看看哪一个是最适合这样做的。

如果你想使用Date,你会发现使用添加天数的方法是各种不推荐的:


改用新的Datenow.getTime+millizes\u IN_DAY*30。或者,如果您不喜欢使用日期,请使用日历。

如果您想使用日期,您会发现使用添加天数的方法是各种不推荐的:


改用新的Datenow.getTime+millizes\u IN_DAY*30。或者,如果您不喜欢日期,请使用日历。

From:Dateint-year、int-month、int-day构造函数已被弃用。使用Datelong date。是的,这是几个版本以前的事了。这解释了Intellij为什么要在参数中添加行:From:Dateint year,int month,int day构造函数不推荐使用。使用Datelong date。是的,那是几个版本以前的事了。这就解释了Intellij为什么要在参数中添加行:有没有更准确的方法来减去一个月?因为月份可以是29、30或31天。减还是加?是的,您可以使用cal.addCalendar.MONTH,+1;有没有更准确的减去一个月的方法?因为月份可以是29、30或31天。减还是加?是的,您可以使用cal.addCalendar.MONTH,+1;