Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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 月的第31天(8月)_Java_Jodatime - Fatal编程技术网

Java 月的第31天(8月)

Java 月的第31天(8月),java,jodatime,Java,Jodatime,以下代码计算孩子从幼儿园毕业的确切日期。它总是在6岁生日后的8月31日。dob是孩子的生日: public static DateMidnight getKigaAustritt(DateMidnight dob){ DateMidnight sechs = dob.plus(Period.years(6)); DateMidnight austritt = new DateMidnight(sechs); if (sechs.getMonthOfYear() >

以下代码计算孩子从幼儿园毕业的确切日期。它总是在6岁生日后的8月31日。dob是孩子的生日:

public static DateMidnight getKigaAustritt(DateMidnight dob){
    DateMidnight sechs = dob.plus(Period.years(6));
    DateMidnight austritt = new DateMidnight(sechs);
    if (sechs.getMonthOfYear() > Month.AUGUST){
        austritt = sechs.withYear(sechs.getYear()+1);
        austritt = sechs.withMonthOfYear(Month.AUGUST);
        austritt = sechs.withDayOfMonth(31);
    }else{
        austritt = sechs.withMonthOfYear(Month.AUGUST);
        austritt = sechs.withDayOfMonth(31);
    }
    return austritt;
}

现在,如果我把它放在这里,这个方法是从其他地方调用的,我总是会得到一个错误,指出dayOfMonth()必须在[1,30]范围内。如果我将代码更改为..withDayOfMonth(30),程序运行良好,但提前一天让孩子毕业。现在,蒙托夫已经是8月份了,我想知道为什么会发生这种情况。有什么提示吗?

问题是没有设置“秒”的月份。这是因为您正在调用
sechs.withMonthOfYear
,但将其分配给
austritt
withMonthOfYear
返回一个修改过的副本,它不会修改调用它的元素。考虑以下事项:

austritt = sechs.withYea(...)
                .withMonthOfYear(...)
                .withDayOfMonth(...);

返回此日期的副本,并更新“月日”字段

DateMidnight是不可变的,因此没有set方法。相反,此方法返回一个新实例,该实例的值为“已更改的月份天数”


问题是没有设置“秒”的月份。这是因为您正在调用
sechs.withMonthOfYear
,但将其分配给
austritt
withMonthOfYear
返回一个修改过的副本,它不会修改调用它的元素。考虑以下事项:

austritt = sechs.withYea(...)
                .withMonthOfYear(...)
                .withDayOfMonth(...);

返回此日期的副本,并更新“月日”字段

DateMidnight是不可变的,因此没有set方法。相反,此方法返回一个新实例,该实例的值为“已更改的月份天数”


问题是
with*()
返回日期的新实例

您需要使用*()执行
sechs=sechs


然后返回sechs。

问题是
with*()
返回一个新的日期实例

您需要使用*()
执行
sechs=sechs


然后再回来。

Wenn schon,dann sollten die Variablen Englishe Namen haben!你觉得英语练习场怎么样?我是一位编辑。在编译器中,一切看起来都是一样的,Java甚至可以处理Unicode:)Wenn schon,dann sollten die Variablen Englishche Namen haben!你觉得英语练习场怎么样?我是一位编辑。在编译器中看起来都一样,Java甚至可以处理Unicode:)明白了。事实上我知道DateMidnight Being是不可变的,但我完全没有看到这里的参考文献。谢谢,明白了。事实上我知道DateMidnight Being是不可变的,但我完全没有看到这里的参考文献。谢谢