黑马程序员技术交流社区
标题:
Calendar类,不用get,为什么取到的字段值就不正常?
[打印本页]
作者:
黄鸿达
时间:
2013-2-8 10:48
标题:
Calendar类,不用get,为什么取到的字段值就不正常?
Calendar call=Calendar.getInstance();
System.out.println("年:"+call.YEAR);
System.out.println("月:"+call.MONTH);
System.out.println("日:"+call.DAY_OF_MONTH);
System.out.println("星期:"+call.WEDNESDAY+1);
//System.out.println(cal);
Calendar cal=Calendar.getInstance();
System.out.println("年:"+cal.get(cal.YEAR));
System.out.println("月:"+(cal.get(cal.MONTH)+1));
System.out.println("日:"+cal.get(cal.DAY_OF_MONTH));
System.out.println("星期:"+cal.get(cal.WEEK_OF_MONTH));
复制代码
显示结果:
年:1
月:2
日:5
星期:41
年:2013
月:2
日:8
星期:2
复制代码
为什么不用get取字段值,数据就这么奇怪?字段值也是该类的成员属性,本类调用成员属性,应该能显示。其中的过程是怎么样的
作者:
黄玉昆
时间:
2013-2-8 11:32
我不太理解你说的“为什么不用get取字段值,数据就这么奇怪?”get和set这对操作是对值的获取和设置的。
你如果要是想获取数据,很多时候都是用get的,java中很多方法都定义get获取变量的数据的。
你说的字段值,我的理解是年月日星期是记录行,而像2013年2月7日星期4中2013、2、7、4都是字段值。
我查看了API文档,其中说Calendar获得的时间,瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
而Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化: Calendar rightNow = Calendar.getInstance();
我的理解是:如果你在初始化后不用get方法获得当前时间的话,那么就会返回get方法中为进行计算的值,这么说吧:
可能get方法中有这样的加法运算:当前时间(如2013)=1970+(2013-1970)+1;(可能这些值都是用变量计算的的,如a+b+c之类的,比如a就代表2013等)
其中的+1代表已经到了2013年这个点,超过了这个点(2013年0月0日0时0分0秒...),就是2014年了,所以你直接取这里的值,会取到年是1之类的数。
这是我个人的理解,不知道是否正确,不过还是要java中的方法为基准,按照java中的方法获取相应的时间值就不会错的。以后慢慢深入学习就会渐渐明白的了。
作者:
铿锵科技
时间:
2013-2-8 21:41
本帖最后由 铿锵科技 于 2013-2-8 21:43 编辑
// 日历对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
// 获取年并输出
System.out.print(calendar.get(Calendar.YEAR) + "年");
// 日历的月份是从0(代表1月)开始的
System.out.print(calendar.get(Calendar.MONTH) + 1 + "月");
//输出日
System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "日");
// System.out.println(calendar.get(Calendar.DATE));
// 日历类的星期数是星期日对应的整数为1开始算起的星期六对应的数为7
System.out.print("星期" + (calendar.get(Calendar.DAY_OF_WEEK) - 1)+" ");
//输出时分
System.out.println(calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2