java jodatime在月底之后无法回到第1位

时间:2015-01-10 12:07:29

标签: 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");
        for (int i = 0; i < 10; i++) {
            System.out.println(datetime.toString(fmt));
            datetime = datetime.plusDays(1);
        }
    }

我得到的结果是

19000131
19000232
19000233......

有人可以建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用joda时间来获得相同的结果(使用java标准日历)

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);
    }
}

<强> - UPDATE -

如果你坚持使用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);
    }
}