まず、関連するものを構築する方法を検討する必要があります。これが、 andLocalDate
を持っている場合に論理的に持っているすべての情報です。その後、必要に応じてwithから aを取得できますが、他に何かが本当に必要になるまではそのまま使用します。そのようにすると、合成される情報が少なくなります。WeekYear
WeekOfWeekYear
LocalDateTime
LocalDate
AtMidnight
LocalDate
正直なところ、現在これを特に単純にしているとは思いませんが、基礎となるエンジンは十分な計算をサポートしているため、かなり簡単に追加できます。
API に変更を加えることなく、おそらく次のようなものを使用することをお勧めします。
- 希望する年内の 6 月 1 日を構築します。これは同じである必要があり
WeekYear
ます (ISO カレンダーを使用していると仮定しています...)
- 週の最初の曜日に移動 (
date = date.Previous(IsoDayOfWeek.Monday)
)
- 現在の週番号を計算する
- 正しい週数を加算または減算する
次のようなものです:
public static LocalDate LocalDateFromWeekYearAndWeek(int weekYear,
int weekOfWeekYear)
{
LocalDate midYear = new LocalDate(weekYear, 6, 1);
LocalDate startOfWeek = midYear.Previous(IsoDayOfWeek.Monday);
return startOfWeek.PlusWeeks(weekOfWeekYear - startOfWeek.WeekOfWeekYear);
}
ひどく快適でも効率的でもありませんが、それほどWeekOfWeekYear
悪くはありません...とで多くの作業をしたい場合は、やりWeekYear
たいことの機能要求を上げてください。
編集: アップデートとして、これをサポートするようになりました:
LocalDate date = LocalDate.FromWeekYearWeekAndDay(year, week, IsoDayOfWeek.Monday);