주어진 날짜의 요일을 표시하는 프로그램을 작성 중입니다. 예 : 목요일 (1970 년 1 월 1 일 목요일) 시도 할 때 몇 가지 문제가 있습니다.01/01/0001 날짜를 월요일로 사용하는 것이 맞습니까?
이것은 내 프로그램입니다.
/*Concept:
The noOfDays variable will count the no of days since 01/01/0001. And this will be Day one(1). E.g
noOfDays = 365 for 01/12/0001 and noOfDays = 731 for 01/01/0003 and so on....
Since I taken Monday as 01/01/0001,the day of the specific date can be achieved by switching(noOfDays%7)
E.g. 365 % 7 = 1. So, the 365th day is monday...
*/
import java.util.Scanner;
class DayDisplayer
{
long noOfDays;
int month;
int days;
int year;
Scanner scan;
int countYear;
int countMonth;
DayDisplayer()
{
scan = new Scanner(System.in);
noOfDays = 0;
System.out.println("Enter the date please");
days = scan.nextInt();
month = scan.nextInt();
year = scan.nextInt();
System.out.println("Your Date is: "+days+"/"+month+"/"+year);
}
boolean leapYearCheck(int year)
{
if(((year%100 == 0) && (year%400 != 0)) || (year%4 != 0)) // when it is divisible by 100 and not by 400.
return false;
else
return true;
}
boolean isThere31Days()
{
if (((countMonth >> 3)^(countMonth & 1)) == 1)
return true;
else
return false;
}
void getDaysThatInDays()
{
noOfDays += days;
}
void getDaysThatInMonth()
{
countMonth = 1;
while(countMonth<month)
{
if(countMonth == 2)
if(leapYearCheck(year) == true)
noOfDays += 29;
else
noOfDays += 28;
else
if (isThere31Days())
noOfDays += 31;
else
noOfDays += 30;
countMonth++;
}
}
void getDaysThatInYear()
{
countYear = 1;
while(countYear<year)
{
if(leapYearCheck(countYear)== true)
noOfDays += 366;
else
noOfDays += 365;
countYear ++;
}
}
void noOfDaysAndDayName()
{
System.out.println("The noOfDays is"+noOfDays);
System.out.println("And Your Day is :");
int day;
day = (int)(noOfDays%7);
switch(day)
{
case 0:
System.out.println("Sunday");
break;
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
}
}
}// end of MonthToDate class
public class Main
{
public static void main(String args[])
{
DayDisplayer dd= new DayDisplayer();
dd.getDaysThatInYear();
dd.getDaysThatInMonth();
dd.getDaysThatInDays();
dd.noOfDaysAndDayName();
}
}
이 코드에서 나는 01/01/0001을 월요일로 가져 와서 다른 날을 계산했습니다. 그리고 나는 정답을 얻고있다.
그러나 www.timeanddate.com 웹 사이트에서는 토요일 01/01/01을 사용했습니다. 그러나 최근 다른 날짜 (2011 년 7 월 17 일)에 대해서는 (일요일과 같이) 정답을 제공하고 있습니다.
이러한 지연은 줄리어 시스템이 그레고리 안 시스템으로 마이그레이션 되었기 때문에 발생할 수 있습니다.
그러나 0001 년에서의 일 계산 방식이 맞는지 여부는 의심 스럽습니다.
또한 01/01/0001 날짜를 월요일 또는 토요일으로 가져갈 지에 대한 의문이 있습니다. (토요일에 첫날로 토요일을 보내면 잘못된 답변이 나옵니다.)
누군가를 설명하십시오.
미리 감사드립니다. 당신은 항상 자바 자체가 당신을 제공 무엇에 비교할 수
숙제 태그를 잊어 버렸습니다 ... –
사용중인 프로그래밍 언어에 대한 태그도 잊어 버렸습니다. –