有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有以下资料:

    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。日期


共 (5) 个答案

  1. # 1 楼答案

    您应该使用日历及其方法Calendar。加

  2. # 2 楼答案

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

    尝试使用java。util。取而代之的是日历

  3. # 3 楼答案

    Date不应用于此类计算

    看一看JodaTime这是最适合做这些事情的

  4. # 5 楼答案

    因为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);