java获取下周一整周的日期_获取Java中日期范围内的所有星期五
我最近遇到了一個任務,我必須在一個日期范圍內獲得所有星期五.我寫了一小段代碼,很驚訝看到一些奇怪的行為.
以下是我的代碼:
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 = startWeek+1;
}
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
總結
以上是生活随笔為你收集整理的java获取下周一整周的日期_获取Java中日期范围内的所有星期五的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烤大蒜的功效与作用、禁忌和食用方法
- 下一篇: 芒果干的功效与作用、禁忌和食用方法