나는 주어진 년에서 year > 1999
이고 0에서 6까지의 값을 반환하는 함수를 만들려고합니다. 여기에서 Sunday = 0, Monday = 1 ... Saturday = 6
은 11 월 1 일이 시작되는 요일과 일치합니다. 내가 11 월 1 일을 알고 있기 때문에 2000 년 3 월 (수요일) 나는 이것을 NOV1
으로 사용한다. 내가 윤년을 염두에 두어야한다는 것을 알고 있으므로 if
성명서가 도움이 될 것입니다. 왜 2100 년 이상 제대로 작동하지 않는지 모르겠습니다. 도와주세요!요일 기능이 작동하지 않습니다
public static int firstOfMonth(int year)
{
int raw = year - 2000;
int leapYears = raw/4;
int nonLeapYears = 0;
if (raw >= 100)
{
nonLeapYears = raw/100;
leapYears = leapYears - (nonLeapYears - (nonLeapYears/4));
}
else
{
nonLeapYears = 0;
}
return (((NOV1 + (raw * 365) - leapYears)) % 7);
}
다시, NOV1는 = 3
날짜와 시간은 프로그램하기에 매우 복잡한 구조입니다. 일반적으로 Java'Calendar' API를 사용하는 것이 좋습니다. – christopher
일반적으로 엄청나게 저조한 캘린더 API보다 joda 시간과 같은 것을 사용하는 것이 좋습니다. –
@christopher'Calendar' API를 사용하는 것은 결코 좋은 생각이 아닙니다. 이것은 끔찍한 API입니다. Java8에는'java.time'이 있고, 이전 jre를 실행하면 사용할 수있는 joda-time도 있습니다. – amit