为什么我的约会日期未正确设定为30天?

Bla*_*man 1 java date

我有以下内容:

    Date now = new Date();
    Date futureDate = new Date(now.getYear(), now.getMonth(), now.getDay() + 30);
Run Code Online (Sandbox Code Playgroud)

我想根据当前日期(现在)将未来日期值设置为30天.

当我调试它时,现在是正确的日期,futureDate是:

Sat Jan 05 00:00:00 EST 2013
Run Code Online (Sandbox Code Playgroud)

今天的日期,现在的价值是:美国东部时间2012年12月29日17:31:58.

这对我没有意义吗?

我正在使用util.Date.

Grz*_*zki 7

因为getDay()返回星期几,而不是月份的日期.

所以你的

now.getDay() + 30
Run Code Online (Sandbox Code Playgroud)

周六+ 30 = 6 + 30 = 12月36日= 1月5日

快速解决方法是用以下代码替换您的代码:

now.getDate() + 30
Run Code Online (Sandbox Code Playgroud)

但正如其他人已经建议的那样,java.util.Date有点被弃用了.你应该使用Calendar.add().所以你的代码会变成:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +30);
Run Code Online (Sandbox Code Playgroud)