int year = calendar.get(Calendar.YEAR);
//如果周次落在最后一周,那么日历向前翻一个月,再去取年份,避免最后一周年份获取有误 if(weekNum == 52 || weekNum == 53 || weekNum == 54){ calendar.add(Calendar.MONTH, -1); year = calendar.get(Calendar.YEAR); }
return new int[]{year,week}; } public static void main(String[] args) { for (int i = 0; i < 8; i++) { Calendar cal = Calendar.getInstance(); cal.set(2015, 11, 28); cal.add(Calendar.DAY_OF_YEAR, i); String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()); System.out.println(dateStr); //打印当前日期-->2015-12-28 int[] result = getWeekOfYear(cal.getTime()); System.out.println(Arrays.toString(result)); //打印年份与周次-->[2015, 53]:表示2015年第53周 } } } //--------打 印 结 果-------> //2015-12-28 //[2015, 53] //2015-12-29 //[2015, 53] //2015-12-30 //[2015, 53] //2015-12-31 //[2015, 53] //2016-01-01 //[2015, 53] //2016-01-02 //[2015, 53] //2016-01-03 //[2015, 53] //2016-01-04//[2016, 1]
//MySql的结果
SELECT WEEKOFYEAR('2015-12-28') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2015-12-29') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2015-12-30') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2015-12-31') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2016-01-01') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2016-01-02') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2016-01-03') as a FROM DUAL-->53 UNION ALL SELECT WEEKOFYEAR('2016-01-04') as a FROM DUAL-->1