为什么Date对象返回错误的一天?

时间:2011-11-08 23:23:08

标签: java

我这样做..

String dateString = "12 Nov 2011 12:00"
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm");
Date date = formatter.parse(dateString);
System.out.println(date.getDay());

这打印出来的日子是3?为什么会这样?我怎样才能打印出正确的日子?

3 个答案:

答案 0 :(得分:4)

请阅读值得学习的文档。

date.getDay()打印星期几。它应该显示6,因为这是一个星期六,不知道你是如何得到3的结果。

答案 1 :(得分:3)

date.getDay()会将星期几作为零索引数字返回。在这种情况下,它应该是星期六(6)。

您周三(3)的结果表明您使用的是所提供代码的变体,并且可能忘记了月份是零索引的。 e.g。

Date date = new Date(2011, 11, 12, 24, 0, 0); // month is now December, and time ticks over to Wednesday 13th
System.out.println(date.getDay()); // this would produce 3

我相信你想要 date.getDate()

如果您正在寻找当天的字符串表示,请查看此示例:

http://www.java-examples.com/formatting-day-week-using-simpledateformat

更好的是,查看Joda-Time库,它比Java SDK中提供的类更直观。未来的Java版本甚至可以采用类似于Joda-Time(JSR-310

的新日期框架

答案 2 :(得分:1)

您显示的代码应打印6,因为此日期是星期六。在我的电脑上发生。没有进一步的信息,我无法推断更多。这是您执行的完整代码吗?您可以打印date.toString()的值,这可能会提供更多信息。

相关问题