黑马程序员技术交流社区

标题: Calendar中小问题 [打印本页]

作者: zfgrinm    时间: 2015-3-3 14:06
标题: Calendar中小问题
  1. package d18;

  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;
  4. import java.util.Date;

  5. public class CalendarTest {

  6.         public static void main(String[] args) {
  7.                 // TODO 自动生成的方法存根

  8.                 Calendar c =Calendar.getInstance();
  9.                 sop(c.get(Calendar.YEAR)+"年");
  10.                 sop(c.get(Calendar.MONTH)+"月");
  11.                 sop(c.get(Calendar.DATE)+"日");
  12.                 Date d =new Date();
  13.                 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日     时间:HH:mm:ss");
  14.                 sop(sdf.format(d));
  15.                
  16.                
  17.                 c.set(2015,3,3);
  18.                 sop(c.get(Calendar.YEAR)+"年");
  19.                 sop(c.get(Calendar.MONTH)+"月");
  20.                 sop(c.get(Calendar.DATE)+"日");
  21.                 sop("2015年中第"+c.get(Calendar.DAY_OF_YEAR)+"天");
  22.                 sop("星期中第"+c.get(Calendar.DAY_OF_WEEK)+"天");
  23.         }

  24.         public static void sop(Object obj)
  25.         {
  26.                 System.out.println(obj);
  27.         }
  28. }
复制代码
有两个小问题,一直没弄明白,求指教:

1.结果中为什么第一次获取的月份是二月,可现在明明是三月;
2.设置日期为2015,3,3后,获取的年月日都没错,但是获取年中的天数和星期中的天数却是2015年04月03日的当天的所对应的结果,为啥?

0000.png (5.29 KB, 下载次数: 5)

0000.png

作者: 大手牵小手    时间: 2015-3-3 16:13
因为是从0开始的,你需要加一, 也就是sop(c.get(Calendar.MONTH)+1)+"月");
作者: ZZGFF    时间: 2015-3-3 23:13
月份是0-11也就是(月份+1),星期是:1代表星期日,2代表星期一,3代表星期2,以此类推, 你需要写一个Switch判断一下。
作者: sh1tge    时间: 2015-3-3 23:37
月份是从0-11
星期是 1代表星期日
楼主可以自定义数组,结合查表法
作者: 笑望长空,逆转    时间: 2015-3-4 10:38
因为月份是从0开始到11的,因此要获取当前日期后面得加1
作者: zfgrinm    时间: 2015-3-4 14:05
明白了。谢了大家啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2