从年,月,日创建java日期对象

新手上路,请多包涵
int day = Integer.parseInt(request.getParameter("day"));  // 25
int month = Integer.parseInt(request.getParameter("month")); // 12
int year = Integer.parseInt(request.getParameter("year")); // 1988

System.out.println(year);

Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0);

b.setDob(c.getTime());

System.out.println(b.getDob());

输出是:

1988

1989 年 1 月 25 日星期三 00:00:08 IST

我正在传递 25 12 1988 但我得到 25 Jan 1989 。为什么?

原文由 JAVAGeek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 411
2 个回答

日历中的月份从零开始。所以 12 被解释为十二月 + 1 个月。利用

c.set(year, month - 1, day, 0, 0);

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是我在 Java 8 之前最喜欢的方式:

 Date date = new GregorianCalendar(year, month - 1, day).getTime();

我会说这比:

 calendar.set(year, month - 1, day, 0, 0);

原文由 Fred Porciúncula 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题