看來你作爲一個起點,需要在每週某一天(您的例子中的星期日或星期一)開始的第一整週。
這可能與一些來實現這樣的:
import static java.time.temporal.TemporalAdjusters.nextOrSame;
public static LocalDate getStartingDate(int year, int weekNo, DayOfWeek weekStart) {
//should check that arguments are valid etc.
return Year.of(year).atDay(1).with(nextOrSame(weekStart)).plusDays((weekNo - 1) * 7);
}
或作爲一種替代方案:
return Year.of(year).atDay(1).with(ALIGNED_WEEK_OF_YEAR, weekNo).with(nextOrSame(weekStart));
你這樣稱呼它:
import static java.time.DayOfWeek.MONDAY;
import static java.time.DayOfWeek.SUNDAY;
System.out.println(getStartingDate(2016, 1, SUNDAY)); //2016-01-03
System.out.println(getStartingDate(2016, 1, MONDAY)); //2016-01-04
你爲什麼要接受'年'作爲一個字符串?您希望的星期編號系統是否精確到ISO-8601?我還建議'LocalDate'是更合適的返回類型。 –