日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java获取下周一整周的日期_获取Java中日期范围内的所有星期五

發布時間:2023/12/4 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中日期范围内的所有星期五的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。