java中GregorianCalendar类返回当前年月日怎么和现实差了1个月

代码如下:
import java.util.GregorianCalendar;
class testGregorianCalendar
{

public static void main(String[] args)
{
GregorianCalendar calendar1 = new GregorianCalendar();

System.out.println("Year:"+ calendar1.get(GregorianCalendar.YEAR));

System.out.println("Month:"+ calendar1.get(GregorianCalendar.MONTH));

System.out.println("Date:"+ calendar1.get(GregorianCalendar.DATE));

}
}

对于java中Calendar和GregorianCalendar的get方法返回的MONTH代表的整型值,

0代表1月,11代表12月。

get方法主要用于数值计算,而不该用于直接显示,所以基于0起。

显示月份应该用

calendar.getDisplayName(
    GregorianCalendar.MONTH,
    GregorianCalendar.SHORT, 
    Locale.CHINA);//这样

或者另外SimpleDateFormat输出统一格式

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-23
Date类对象的创建:

n 创建一个当前时间
//默认是创建一个代表系统当前日期的Date对象
Date d = new Date();
n 创建一个我们指定的时间的Date对象:
下面是使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。
//创建一个代表2009年6月12号的Date对象
Date d1 = new Date(2009-1900, 6-1, 12); (注意参数的设置啊!)
l 正确获得一个date对象所包含的信息
如:
Date d2 = new Date(2009-1900, 6-1, 12);
//获得年份 (注意年份要加上1900,这样才是日期对象d2所代表的年份)
int year = d2.getYear() + 1900;
//获得月份 (注意月份要加1,这样才是日期对象d2所代表的月份)
int month = d2.getMonth() + 1;
//获得日期
int date = d2.getDate();
//获得小时
int hour = d2.getHours();
//获得分钟
int minute = d2.getMinutes();
//获得秒
int second = d2.getSeconds();
//获得星期 (注意:0代表星期日、1代表星期1、2代表星期2,其他的一次类推了)
int day = d2.getDay();
运行结果:
年份:2015
月份:7
日期:23
小时:0 //不设置默认是0
分钟:0 //不设置默认是0
秒:0 //不设置默认是0
星期:5 //15-7-23今天就是星期5,又是一个星期天