티스토리 뷰

import java.util.Scanner;

import java.util.Date; // 시스템의 시간

import java.util.StringTokenizer; // 구분 문자별로 문자열을 나눠주는 클래스

import java.text.SimpleDateFormat;// 날짜 형태를 마음대로 조절

public class testcoding {


private int year, month, total;

private int[] lastday={31,28,31,30,31,30,31,31,30,31,30,31};

// 생성자로 멤버변수 초기화

public testcoding() 

{

//시스템시간 읽어옴 Date(),StringTokenizer(),SimpleDateFormat()

Date date = new Date(); // 시스템의 시간을 읽어옴

//원하는 날짜 형태로 변경(대문자 M = 월 소문자 m =분)

    //M, d를 하나만 붙여주면 있는 그대로 가져옴 -> 1 일 경우 01 이 아닌 1로 가져옴

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");

//System.out.println(sdf.format(date));

    //년도, 월, 일씩 자름 -> yyyy mm dd로 자름-> 기준점이 - 이기 때문에

StringTokenizer st=new StringTokenizer(sdf.format(date),"-");

String strYear=st.nextToken(); // yyyy

String strMonth=st.nextToken(); // MM

String strDay=st.nextToken(); // dd

//System.out.println("Year : "+strYear);

    //System.out.println("Month : "+strMonth);

    //System.out.println("Day : "+strDay);

// 문자열을 정수형으로 변경

year=Integer.parseInt(strYear);

month=Integer.parseInt(strMonth);

total=0;

}

// 입력

public void input()

{

Scanner scan = new Scanner(System.in);

System.out.print("년도 입력 : ");

year = scan.nextInt();

System.out.print("월 입력 : ");

month = scan.nextInt();

}

// 총 날짜수 계산

public void getTotal()

{

// 전년도까지의 총 날짜

total=(year-1)*365+(year-1)/4 -(year-1)/100+(year-1)/400;

if(isYear(year))

{

lastday[1]=29;

}

else

{

lastday[1]=28;

}

for(int i=0; i<month-1;i++)

total+=lastday[i];

total+=1;

}

// 윤년 계산

public boolean isYear(int year)

{

//변수명이 같을 경우 지역변수 우선순위(메소드 영역에서 선언된 변수, 매개 변수)

if((year)%4==0 && year%100!=0 || (year%400==0))

return true;

else

return false;

}

// 요일 계산

public int getWeek()

{

int week=total%7;

return week;

}

// 요일부터 달력 출력

public void output(int week)

{

char[] strWeek={'일','월','화','수','목','금','토'};

for(int i=0;i<strWeek.length;i++)

{

System.out.print(strWeek[i]+"\t");

}

System.out.println("\n");

for(int i=1; i<=lastday[month-1];i++)

{

if(i==1)

{

for(int j=0;j<week;j++)

{

System.out.print("\t");

}

}

System.out.printf("%2d\t",i);

week++;

if(week>6)

{

week=0;

System.out.println();

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

testcoding a=new testcoding();

a.input();

a.getTotal();

int week=a.getWeek();

a.output(week);

}


}


전에 올린 달력 출력 소스를 메소드화 시켜봤습니다.

주석은 달력출력 소스를 참고하시면 되겠습니다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함