java jodatime无法在月底后返回到1

java jodatime无法在月底后返回到1,java,jodatime,Java,Jodatime,我正在写一个程序,应该每天返回日期。我使用的是DateTime.plusDays(1),但它在1月31日之后返回2月32日。我将代码简化如下 public static void main(String[] args) { DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0); DateTimeFormatter fmt = DateTimeFormat.forPattern("YYYYMMDD");

我正在写一个程序,应该每天返回日期。我使用的是DateTime.plusDays(1),但它在1月31日之后返回2月32日。我将代码简化如下

public static void main(String[] args) {

        DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0);
        DateTimeFormatter fmt = DateTimeFormat.forPattern("YYYYMMDD");
        for (int i = 0; i < 10; i++) {
            System.out.println(datetime.toString(fmt));
            datetime = datetime.plusDays(1);
        }
    }

谁能给点建议吗?提前感谢。

在没有joda时间的情况下尝试使用此功能,以获得相同的结果(使用java标准日历)

publicstaticvoidmain(字符串[]args){
日历=Calendar.getInstance();
日历.set(1900,0,31);//月份以0为基础
对于(int i=0;i<10;i++){
System.out.println(String.format(“%4d%02d%02d”,calendar.get(calendar.YEAR),calendar.get(calendar.MONTH)+1,calendar.get(calendar.DAY/u MONTH));
calendar.add(calendar.DAY/u/u月,1);
}
}
--更新--

如果你坚持使用joda,你可以使用:

public static void main(String[] args) {
    DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0);
    for (int i = 0; i < 10; i++) {
        System.out.printf("%4d%02d%02d\n", datetime.getYear(), datetime.getMonthOfYear(), datetime.getDayOfMonth());
        datetime = datetime.plusDays(1);
    }
}
publicstaticvoidmain(字符串[]args){
DateTime DateTime=新的日期时间(1900,1,31,0,0,0);
对于(int i=0;i<10;i++){
System.out.printf(“%4d%02d%02d\n”、datetime.getYear()、datetime.getMonthOfYear()、datetime.getDayOfMonth());
datetime=datetime.plusDays(1);
}
}

问题出在DateTimeFormatter中,请尝试将其打印为java.util.Date以查看结果!!尝试yyyyMMdd作为日期格式。信箱在这里很重要。DD是一年中的一天。此外,
YYYY
几乎肯定不是你想要的。使用小写版本
yyyy
。它可以工作,谢谢你,德克!可能重复的
public static void main(String[] args) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(1900, 0, 31); // month is 0 based
    for (int i = 0; i < 10; i++) {
        System.out.println(String.format("%4d%02d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH)));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
}
public static void main(String[] args) {
    DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0);
    for (int i = 0; i < 10; i++) {
        System.out.printf("%4d%02d%02d\n", datetime.getYear(), datetime.getMonthOfYear(), datetime.getDayOfMonth());
        datetime = datetime.plusDays(1);
    }
}