獲取某年 所有周的開始和結束 並輸出
阿新 • • 發佈:2021-01-19
技術標籤:Java語言程式設計
一,建立周的開始和結束物件
package Test; /** * @author Administrator */ class Week1 { String start; String end; public String getStart() { return start; } public void setStart(String start) { this.start = start; } public String getEnd() { return end; } public void setEnd(String end) { this.end = end; } public Week1(String start, String end) { this.start = start; this.end = end; } @Override public String toString() { return "Week1{" + "start='" + start + '\'' + ", end='" + end + '\'' + '}'; } }
二,設計方法
package Test; import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; /** * @author Administrator *@week 獲取某年 所有周開始和結束 */ public class Test { public static ArrayList week(int number) { //輸入一個年份把這個年份拼成一個字串年份+ 1.1 String Str = number + "-01-01"; //賦值給date 日期 返回的是 xxxx-xx-xx LocalDate date = LocalDate.parse(Str); //value 是這一年的第一天星期幾 (轉換成數字型)date.getDayOfWeek() 獲取英文形式的這一年的第一天是星期幾 int value = date.getDayOfWeek().getValue(); //建立一個動態陣列把每週日期開始和結束放進去 ArrayList arrayList = new ArrayList(); //判斷是否是閏年 boolean date1 = date.isLeapYear(); //刪除1月前面的數 然後對這個數求餘數 就是後面沒有遍歷到的數 拿總數減去 前後天數就是剩餘天數 //閏年 int value1 = 366 - (8 - value); int value2 = value1 - (value1 % 7); //不是閏年 int value3 = 365 - (8 - value); int value4 = value3 - (value3 % 7); /** * 因為一年第一天是星期value 假設星期5(隱藏屬性他還是1月1號) 那麼下週1 就是1月4號 他們之間的關係是 * 9-value 得到 這一年的第一週開始日期 開始日期加6 就是結束日期 一共有多少天可以分為 閏年 非閏年 * LocalDate.ofYearDay(number, i) 是某年的第多少天返回 xxxx-xx-xx * 例如LocalDate.ofYearDay(2021, 38) 返回 2021-2-7 * 這樣就可以把資料存放動態數組裡面了 這裡我們要求了 一週的開始和結束 加了兩個物件 * 將時間型轉換成字串是localDate1.toString(); toString方法 */ for (int i = 9 - value; i <= (date1 ? value2 : value4); i = i + 7) { LocalDate localDate1 = LocalDate.ofYearDay(number, i); LocalDate localDate2 = LocalDate.ofYearDay(number, i + 6); Week1 week1 = new Week1(localDate1.toString(), localDate2.toString()); arrayList.add(week1); } return arrayList; } public static void main(String[] args) { System.out.println(week(2021)); } }