LocalDateは一年間の週数を取得し、また指定週数月曜日から日曜日までの日付を指定します。
11271 ワード
java 8は一年の持っている周数と周数に対応する日付をどうやって取得しますか?
public class TestWeekNumAndDate {
/**
* @param args
*/
public static void main(String[] args) {
// ,
WeekFields wfs= WeekFields.of(DayOfWeek.MONDAY, 4);
// LocalDate, 1 52, 52 , 53
//
int num= LocalDate.of(2019, 12, 31).get(wfs.weekOfWeekBasedYear());
num = num == 1 ? 52 : num;
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.MONDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.TUESDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.WEDNESDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.THURSDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.FRIDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.SATURDAY));
System.out.println(" " + num + " , :" + getDateByYearAndWeekNumAndDayOfWeek(2019, num, DayOfWeek.SUNDAY));
// ,
System.out.println(LocalDate.parse("2019-52-1", DateTimeFormatter.ofPattern("YYYY-ww-e", Locale.CHINA)));
}
private static LocalDate getDateByYearAndWeekNumAndDayOfWeek(Integer year, Integer num, DayOfWeek dayOfWeek) {
// 10 0
String numStr = num < 10 ? "0" + String.valueOf(num) : String.valueOf(num);
//2019-W01-01 ,2019-W02-07
String weekDate = String.format("%s-W%s-%s", year, numStr, dayOfWeek.getValue());
return LocalDate.parse(weekDate, DateTimeFormatter.ISO_WEEK_DATE);
}
}