直接上代碼,備份使用
時間戳,長整型存儲
long startTime1 = 1530613938532l;
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);//設置星期一為一周開始的第一天
calendar.setMinimalDaysInFirstWeek(4);//可以不用設置
calendar.setTimeInMillis(System.currentTimeMillis());//獲得當前的時間戳
int weekYear = calendar.get(Calendar.YEAR);//獲得當前的年
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);//獲得當前日期屬於今年的第幾周
System.out.println("第幾周:"+weekOfYear);
calendar.setWeekDate(weekYear, weekOfYear, 2);//獲得指定年的第幾周的開始日期
long starttime = calendar.getTime().getTime();//創建日期的時間該周的第一天,
calendar.setWeekDate(weekYear, weekOfYear, 1);//獲得指定年的第幾周的結束日期
long endtime = calendar.getTime().getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStart = simpleDateFormat.format(starttime);//將時間戳格式化為指定格式
String dateEnd = simpleDateFormat.format(endtime);
System.out.println(dateStart);
System.out.println(dateEnd);
這個獲取第幾周的方法在跨年周上會出現問題
上面這種方式用來獲取指定日期的周開始日期和結束日期是可以的,用來判斷當前日期屬於第幾周則不行
參考資料:
一年有幾周 https://zhidao.baidu.com/question/490464213.html
在中華人民共和國,包含1月4日的那個星期為當年的第一個星期
鏈接:https://www.zhihu.com/question/33649214/answer/129104583
依據:
根據中華人民共和國國家標准GB/T 7408-2005《數據元和交換格式信息交換日期和時間表示法》中4.3.3.2部分:
根據中華人民共和國國家標准GB/T 7408-2005《數據元和交換格式信息交換日期和時間表示法》中4.3.3.2部分:
即一年中的第一個 日歷星期包括該年的第一個星期四,並且日歷年的最后一個日歷星期就是在下一個日歷年的第一個日歷星期之前的那個星期,日歷星期數是其在該年中的順序。以及其注釋:
注 4:確定第1個日歷星期的規則與規則“第一個 日歷星期包含1月4日的星期”是等同的。
