为什么calendar.get(Calendar.MONTH)返回的月份是前一个月而不是当前月份?


Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
String data = calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE) + " " + calendar.get(Calendar.DAY_OF_MONTH) + "-"
        + calendar.get(Calendar.MONTH) + "-"
        + calendar.get(Calendar.YEAR);
System.out.println(data);

nad print: 23:3 15-6-2015但今天是23:03 15-7-2015

如何将23:3改为23:03 ?

这是完全不直观和烦人的,但这就是API的设计方式;当您请求月份时返回的值是从零开始的;你必须在上面加1才能得到"真正的"月号。

查看Calendar.MONTH字段的文档:

get和set的字段号,表示月份。这是一个特定于日历的值。公历和儒略历一年的第一个月是JANUARY ,即0;最后一个取决于一年的月数。(强调我的)

此外,与其手工构建字符串,不如使用SimpleDateFormat之类的东西容易得多;这样您就不会遇到这个问题了,而且您还可以将时间打印为23:03:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm dd-MM-yyyy");
sdf.setTimeZone(calendar.getTimeZone());
System.out.println(dateFormat.format(calendar.getTime()));

最新更新