gpt4 book ai didi

java - 如何在Java中查找一年的总周数?

转载 作者:行者123 更新时间:2023-12-01 09:01:16 24 4
gpt4 key购买 nike

我正在做一个项目。我应该在那里找到一年的总周数。我尝试使用以下代码,但得到的答案是错误的: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

最佳答案

使用Wikipedia定义here。如果1月1日是星期四,或12月31日是星期四,则一年有53周,否则有52周。此定义等同于您使用的定义。我认为这是一种更容易检查的条件,因为您不需要检查leap年。

使用Java 8 java.time API:

int year = 2020;
boolean is53weekYear = LocalDate.of(year, 1, 1).getDayOfWeek() == DayOfWeek.THURSDAY ||
LocalDate.of(year, 12, 31).getDayOfWeek() == DayOfWeek.THURSDAY;
int weekCount = is53weekYear ? 53 : 52;

关于java - 如何在Java中查找一年的总周数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59935857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com