我想检索我的应用程序的日期和时间,我为此编写了以下代码
Calendar c = Calendar.getInstance();
System.err.println("Date is: " + c.get(Calendar.DATE));
System.err.println("Month is: " + c.get(Calendar.MONTH));
System.err.println("Year is: " + c.get(Calendar.YEAR));
System.err.println("Hour is: " + c.get(Calendar.HOUR_OF_DAY));
但是前面的代码段提供的结果不正确。
SEVERE: Date is: 31
SEVERE: Month is: 11
SEVERE: Year is: 2012
SEVERE: Hour is: 17
注意:我机器上的时间很完美,没问题
答案 0 :(得分:0)
Month
为零索引。所以,11
意味着它的12月。
答案 1 :(得分:0)
您获得的输出是正确的。
我觉得你很困惑,为什么你把月份变为11而不是12。对吗?如果这是问题,那么不要打扰。月份为0,因此0
为January
,1
为Feb
,依此类推......
因此输出11
表示December
。
如果您希望月份有适当的措辞,请使用以下内容。
Calendar rightNow = Calendar.getInstance();
java.text.SimpleDateFormat df1 = new java.text.SimpleDateFormat("MM");
java.text.SimpleDateFormat df2 = new java.text.SimpleDateFormat("MMM");
java.text.SimpleDateFormat df3 = new java.text.SimpleDateFormat("MMMM");
System.out.println(df1.format(rightNow.getTime()));
System.out.println(df2.format(rightNow.getTime()));
System.out.println(df3.format(rightNow.getTime()));
它会给出
12
Dec
December
注意:在演示中,您将看到2013年1月,因为此网站的服务器已经在2013年开始。 World Time
答案 2 :(得分:0)
你预计本月会有12而不是11。
c.get(Calendar.MONTH)
返回基于0的索引。
来自javadoc
:
public static final int MONTH
获取和设置的字段编号,表示月份。这是特定于日历的值。格列高利历和朱利安历的一年中的第一个月是1月,即0;最后一个取决于一年中的月数。