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;