在Java中使用日历获取错误的日期
可能重复:在Java中使用日历获取错误的日期,java,date,time,calendar,Java,Date,Time,Calendar,可能重复: 我想检索我的应用程序的日期和时间,为此我编写了以下代码 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.e
我想检索我的应用程序的日期和时间,为此我编写了以下代码
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
注意:我机器上的时间非常完美,没有问题
月份
为零索引。因此,11
表示12月。您得到的输出是正确的。
我想你很困惑为什么你的月数是11而不是12。对吗?如果这是个问题,那就不用麻烦了。月份以0为基础,因此0
是1月
,1
是2月
,依此类推
因此,输出为11
意味着是12月
如果您希望使用正确的月份,请使用下面的文字
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年已经开始的地方 这个月你的期望值是12而不是11
c.get(Calendar.MONTH)
返回基于0的索引
从:
公共静态最终整数月
表示月份的get和set字段编号。这是特定于日历的值。在公历和儒略历中,一年的第一个月是1月,即0;最后一个取决于一年中的月数。你期望的是什么?哈哈,太棒了。乔达:时间很好,你得到的是绝对正确的。请参阅文档:提示:以后再做一些研究,这样可以防止人们对你的问题投反对票。您的问题的答案可以在Java文档中查找。@user1822826我认为否决票也是因为您没有解释输出的错误(即您认为月份部分错误)。否决票不会阻止你提问。