私はプロジェクトに取り組んでいます。そこで、私は1年の合計週を見つける必要があります。次のコードを試してみましたが、間違った答えが返ってきました。2020年は53週間ですが、このコードでは52週間になります。
このコードのどこが間違っていますか?
package com.hib.mapping;
import Java.time.LocalDate;
import Java.time.temporal.WeekFields;
import Java.util.Calendar;
import Java.util.GregorianCalendar;
import org.joda.time.DateTime;
public class TestWeek {
public static void main(String args[]) {
System.out.println(getWeeks());
}
public static int getWeeks() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2020);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
GregorianCalendar gregorianCalendar = new GregorianCalendar();
int weekDay = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (gregorianCalendar.isLeapYear(2020)) {
if (weekDay == Calendar.THURSDAY || weekDay == Calendar.WEDNESDAY)
return 53;
else
return 52;
} else {
if (weekDay == Calendar.THURSDAY)
return 53;
else
return 52;
}
}
}
52
これもうまくいくと思います:
int year = 2020;
long numOfWeeks = LocalDate.of(year, 1, 1).datesUntil(LocalDate.of(year, 12, 31), Period.ofDays(7)).count();
System.out.println("Weeks: " + numOfWeeks);
Java= 8.でたくさん試した後、私は解決策を見つけることができませんでした。それから、Jodaの日付と時刻の依存関係を準備しました。それは期待どおりに私に良い答えを与えました
コード:
for (int i = 2020; i < 2100; i++) {
int weeks = new DateTime().withYear(i).weekOfWeekyear().getMaximumValue();
System.out.println(i + " years : " + weeks);
}
Mavenの依存関係:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.5</version>
</dependency>