平台营销型网站,网站模版配置数据库,网络公司做网站后交代给客户什么,网络推广协议我最近遇到了一个任务,我必须在一个日期范围内获得所有星期五.我写了一小段代码,很惊讶看到一些奇怪的行为.以下是我的代码#xff1a;public class Friday {public static void main(String[]args){String start 01/01/2009;String end 12/09/2013…我最近遇到了一个任务,我必须在一个日期范围内获得所有星期五.我写了一小段代码,很惊讶看到一些奇怪的行为.以下是我的代码public class Friday {public static void main(String[]args){String start 01/01/2009;String end 12/09/2013;String[] startTokens start.split(/);String[] endTokens end.split(/);Calendar startCal new GregorianCalendar(Integer.parseInt(startTokens[2]),Integer.parseInt(startTokens[1])-1,Integer.parseInt(startTokens[0]));Calendar endCal new GregorianCalendar(Integer.parseInt(endTokens[2]),Integer.parseInt(endTokens[1])-1, Integer.parseInt(endTokens[0]));int startYear Integer.parseInt(startTokens[2]);int endYear Integer.parseInt(endTokens[2]);int startWeek startCal.get(Calendar.WEEK_OF_YEAR);int endWeek endCal.get(Calendar.WEEK_OF_YEAR);Calendar cal new GregorianCalendar();cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);// cal.setMinimalDaysInFirstWeek(7);ArrayList main new ArrayList();while(startYear endYear ){cal.set(Calendar.YEAR, startYear);System.out.println(cal.getMinimalDaysInFirstWeek());if(startYear endYear){main.addAll(getFridays(startWeek, endWeek, cal));}else{main.addAll(getFridays(startWeek, 52, cal));startWeek 1;}startYear startYear 1;}for(String s: main){System.err.println(s);}}public static ArrayList getFridays(int startWeek, int endWeek, Calendar cal){ArrayList fridays new ArrayList();while(startWeek endWeek){cal.set(Calendar.WEEK_OF_YEAR, startWeek);fridays.add(cal.getTime().toString());startWeek startWeek1;}return fridays;}}现在,当我运行代码时,我发现2011年的星期五不见了.经过一些调试和在线浏览,我发现Calendar.WEEK_OF_YEAR是特定于语言环境的,我必须使用setMinimalDaysInFirstWeek(7)来修复它.所以取消注释上面代码中的相关行.根据我的理解,现在每年的第一周应该从一周的整周开始.例如2010年1月1日是星期五.但它不应该出现在结果中,因为我将其配置为处理该周从1月3日开始.但是现在我仍然把1月1日视为星期五我很困惑.有人可以解释为什么会这样吗这些Stackoverflow文章对我有所帮助Why dec 31 2010 returns 1 as week of year?Understanding java.util.Calendar WEEK_OF_YEAR