Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2008);
cal.set(Calendar.MONTH, 11);
cal.set(Calendar.DATE, 27);
System.out.println( new SimpleDateFormat("yyyy-M-dd").format(cal.getTime()));
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
这是显示的是52
如果我将日期设定为28的时候显示的却是1不知道是怎么会事。
这个问题我也碰到过
原理是这样的
1 你没设本地TimeZone和Locale
2 如果用Calendar构造一个Date 那时没有问题的
如果用set
cal.set(Calendar.MONTH, 11); 貌似表示12月
具体可以用
System.out.println(cal.getTime());看下
所以你的结果是2008年12月28日
又应为这周是跨年的,就是有半周为2009年
所以客观的认为 这是2009年第一个周
Calendar.get(Calendar.WEEK_OF_YEAR)