我正在编写一个应该每天返回日期的程序。我正在使用 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......
有人可以建议吗?提前谢谢。
答案 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);
}
}