사용자는 특정 연도의 달력을 사용자 정의하고 인쇄할 수 있습니다. 즉, 특정 연도의 모든 달력을 인쇄할 수 있습니다.
예를 들어, 다음과 같이 2013년 달력을 인쇄합니다.
2013년 2월
---------------------------
일 월 화 수 목 금 토
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28
2013년 3월
---------------------------
일 월 화 수 목 금 토
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
2013년 4월
---------------------------
일 월 화 수 목 금 토
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30
2013년 5월
---------------------------
일 월 화 수 목 금 토
2 3 4
6 7 8 9 10 11
13 14 15 16 17 18
20 21 22 23 24 25
27 28 29 30 31
2013년 6월
---------------------------
일 월 화 수 목 금 토
3 4 5 6 7 8
10 11 12 13 14 15
17 18 19 20 21 22
24 25 26 27 28 29
2013년 7월
---------------------------
일 월 화 수 목 금 토
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30 31
2013년 8월
---------------------------
일 월 화 수 목 금 토
스물셋
5 6 7 8 9 10
12 13 14 15 16 17
19 20 21 22 23 24
26 27 28 29 30 31
2013년 9월
---------------------------
일 월 화 수 목 금 토
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30
2013년 10월
---------------------------
일 월 화 수 목 금 토
2 3 4 5
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26
28 29 30 31
2013년 11월
---------------------------
일 월 화 수 목 금 토
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
2013년 12월
---------------------------
일 월 화 수 목 금 토
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30 31
인쇄 등: 2014년 1월 달력
오늘은 2013-04-27이며 이번 달의 달력은 다음과 같이 인쇄됩니다.
이제 코드 부분을 입력하세요.
================================================= ======
코드 부분:
================================================= ======
/UUUUUU_Test/src/com/b510/date/HongtenDate.java
import java.text.SimpleDateFormat;
import java.util.Calendar;
java.util.Date 가져오기;
import java.util.GregorianCalendar;
/**
* 날짜 처리 클래스. 이 클래스에서 생성자 <code>HongtenDate()</code>는 기본적으로 연도를 현재 연도로 설정합니다.<br>
* 그리고 <code>HongtenDate(int year)</code>, 연도를 맞춤설정할 수 있습니다<br>
*
* <예비>
* 홍텐데이트 날짜 = new 홍텐데이트();
* </pre>
*
* 또는<br>
*
* <예비>
* 홍텐데이트 hd = new 홍텐데이트(2014);
* </pre>
*
* 연도의 날짜를 인쇄하려면 <code>printCalendar()</code>를 호출하세요<br>
* 이번 달의 날짜를 인쇄하려면 <code>printCurrentMonth()</code>를 호출하세요<br>
* 물론 전화로도 가능합니다<br>
* <code>printMonthOfYear()</code>특정 달의 날짜를 인쇄하는 매개변수 설정<br>
* 다음은 몇 가지 참고 계획입니다.<br>
*
* <예비>
* // 매개변수가 없습니다. 시스템 기본값은 현재 연도입니다.
* 홍텐데이트 날짜 = new 홍텐데이트();
* 날짜.printCalendar();
* 날짜.printCurrentMonth();
* 날짜.printMonthOfYear(4);
* </pre>
*
* 또는<br>
*
* <예비>
* // 2014년으로 설정
* 홍텐데이트 hd = new 홍텐데이트(2014);
* hd.printCurrentMonth();
* hd.printMonthOfYear(1);
* </pre>
*
* @날짜 2013-4-27
* @author 홍텐
*
*/
공개 수업 HongtenDate {
//월
// ============================================
public static final String JANUARY = "1월";
public static final String FEBUARY = "2월";
public static final String MARCH = "3월";
public static final String APRIL = "4월";
public static final String MAY = "5월";
public static final String JUN = "Jun";
public static final String JULY = "7월";
public static final String AUGUST = "8월";
public static final String SEPTERMBER = "9월";
public static final String OCTOBER = "10월";
public static final String NOVEMBER = "11월";
public static final String DECEMBER = "12월";
/**
* 년도
*/
개인 연도;
/**
* 1월 1일의 요일(예: 2013-01-01-->화요일이므로 <code>whatDayOnJanuaryOne = 2;</code>)
*/
개인 int whatDayOnJanuaryOne;
// 기본
// =======================================
public static void main(String[] args)에서 예외가 발생합니다.
// 매개변수가 없습니다. 시스템 기본값은 현재 연도입니다.
HongtenDate 날짜 = new HongtenDate();
//date.printCalendar();
날짜.printCurrentMonth();
// 날짜.printMonthOfYear(4);
// 2014로 설정
홍텐데이트 hd = new 홍텐데이트(2014);
// hd.printCurrentMonth();
// hd.printMonthOfYear(1);
}
// 매개변수가 없습니다. 시스템 기본값은 현재 연도입니다.
공개홍텐날짜() {
달력 cal = Calendar.getInstance();
this.year = cal.get(Calendar.YEAR);
노력하다 {
setWhatDayOnJanuaryOne(getJanuaryOne(년));
} 잡기(예외 e) {
e.printStackTrace();
}
}
//매개변수로 연도 설정
public HongtenDate(int year) {
this.year = 연도;
노력하다 {
setWhatDayOnJanuaryOne(getJanuaryOne(년));
} 잡기(예외 e) {
e.printStackTrace();
}
}
/**
* 특정 달의 모든 날짜를 인쇄합니다.
*
* @parammon
* 월
* @throwsException
*/
public void printMonthOfYear(int mon)에서 예외가 발생합니다.
if (월 < 1 || 월 > 12) {
System.out.println("입력한 월 [" + mon + "]이(가) 틀렸습니다. 진행중인 상태를 확인해주세요....");
반품;
}
GregorianCalendar 이제 = new GregorianCalendar();
//날짜 객체 얻기
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
날짜 date = sdf.parse(연도 + "-" + mon + "-01");
//현재 시간을 설정한다
now.setTime(날짜);
// 날짜로부터 이번 달을 구합니다.
int 월 = now.get(Calendar.MONTH);
//현재 날짜를 1로 설정
now.set(Calendar.DAY_OF_MONTH, 1);
// 현재 요일을 구합니다.
int week = now.get(Calendar.DAY_OF_WEEK);
//캘린더 헤더 라벨 인쇄
System.out.println("日/t一/t이/t삼/t사/t五/t六");
//현재 날짜 이전의 공백을 인쇄합니다.
for (int i = Calendar.SUNDAY; i < 주; i++) {
System.out.print("/t");
}
//캘린더 본문을 인쇄합니다.
while (now.get(Calendar.MONTH) == 월) {
int day = now.get(Calendar.DAY_OF_MONTH);
//출력 달력을 정렬하고, 10보다 작으면 공백을 추가합니다.
if (일 < 10) {
System.out.print(" " + 일 + "/t");
} 또 다른 {
System.out.print("" + 일 + "/t");
}
// 토요일이면 줄 바꿈
if (주 == Calendar.SATURDAY) {
System.out.println();
}
// 날짜가 출력될 때마다 날짜에 1일을 추가합니다.
now.add(Calendar.DAY_OF_MONTH, 1);
// 요일을 검색합니다.
주 = now.get(Calendar.DAY_OF_WEEK);
}
}
/**
* 이번 달의 모든 날짜를 인쇄합니다. 이는 사용자가 설정한 연도에 따라 변경되지 않습니다.
*/
공공 무효 printCurrentMonth() {
GregorianCalendar 이제 = new GregorianCalendar();
//날짜 객체 얻기
날짜 날짜 = new Date();
//현재 시간을 설정한다
now.setTime(날짜);
//날짜에서 현재 날짜를 가져옵니다.
int toDay = now.get(Calendar.DAY_OF_MONTH);
// 날짜로부터 이번 달을 구합니다.
int 월 = now.get(Calendar.MONTH);
//현재 날짜를 1로 설정
now.set(Calendar.DAY_OF_MONTH, 1);
// 현재 요일을 구합니다.
int week = now.get(Calendar.DAY_OF_WEEK);
//캘린더 헤더 라벨 인쇄
System.out.println("日/t一/t이/t삼/t사/t五/t六");
//현재 날짜 이전의 공백을 인쇄합니다.
for (int i = Calendar.SUNDAY; i < 주; i++) {
System.out.print("/t");
}
//캘린더 본문을 인쇄합니다.
while (now.get(Calendar.MONTH) == 월) {
int day = now.get(Calendar.DAY_OF_MONTH);
//출력 달력을 정렬하고, 10보다 작으면 공백을 추가합니다.
if (일 < 10) {
// 현재 날짜인 경우 라벨을 추가합니다.
if (일 == toDay) {
System.out.print(":)" + 일 + "(:/t");
} 또 다른 {
System.out.print(" " + 일 + "/t");
}
} 또 다른 {
// 현재 날짜인 경우 라벨을 추가합니다.
if (일 == toDay) {
System.out.print(":)" + 일 + "(:/t");
} 또 다른 {
System.out.print("" + 일 + "/t");
}
}
// 토요일이면 줄 바꿈
if (주 == Calendar.SATURDAY) {
System.out.println();
}
// 날짜가 출력될 때마다 날짜에 1일을 추가합니다.
now.add(Calendar.DAY_OF_MONTH, 1);
// 요일을 검색합니다.
주 = now.get(Calendar.DAY_OF_WEEK);
}
}
/**
* 올해 1월 1일인 요일을 구합니다.
*
* @param 연도
* 년도
* @반품
* @throwsException
*/
public int getJanuaryOne(int year)에서 예외가 발생합니다.
int[] weekDays = { 0, 1, 2, 3, 4, 5, 6 };
달력 cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
날짜 dt = sdf.parse(연도 + "-01-01");
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
만약 (w < 0)
w = 0;
주일수[w]를 반환합니다.
}
/**
* 일년 중 모든 달을 인쇄하세요
*/
공공 무효 printCalendar() {
for (int i = 1; i <= 12; i++) {
문자열 월 = getMonth(i);
printTitle(월);
//31일이 있는 달을 출력합니다.
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
print31();
}
//30일이 있는 달을 출력합니다.
else if (i == 4 || i == 6 || i == 9 || i == 11) {
인쇄30();
}
// 2월 인쇄
else if (i == 2) {
printFebuary();
}
System.out.println();
}
}
//인쇄 형식
// ============================================ 시작
/**
* 2월 인쇄. 2월은 매년 다를 수 있으므로 별도로 처리해야 합니다.
*/
보호된 무효 printFebuary() {
if (올해 % 4 == 0) {
// 윤년
printLeapYear();
} 또 다른 {
// 평년
printNonleapYear();
}
}
/**
* 윤년 2월의 인쇄 형식
*/
개인 무효 printLeapYear() {
for (int j = 1; j <= 29; j++) {
문자열 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} 또 다른 {
System.out.print(tmp);
}
} else if (j > 1 && j < 29) {
if ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} 또 다른 {
만약 (j < 10) {
System.out.print(" " + j + " ");
} 또 다른 {
System.out.print(" " + j + " ");
}
}
} else if (j == 29) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* 평년 2월 형식으로 출력
*/
개인 무효 printNonleapYear() {
for (int j = 1; j <= 28; j++) {
문자열 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} 또 다른 {
System.out.print(tmp);
}
} else if (j > 1 && j < 28) {
if ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} 또 다른 {
만약 (j < 10) {
System.out.print(" " + j + " ");
} 또 다른 {
System.out.print(" " + j + " ");
}
}
} else if (j == 28) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* 월을 30일로 인쇄
*/
보호된 무효 print30() {
for (int j = 1; j <= 30; j++) {
문자열 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} 또 다른 {
System.out.print(tmp);
}
} else if (j > 1 && j < 30) {
if ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} 또 다른 {
만약 (j < 10) {
System.out.print(" " + j + " ");
} 또 다른 {
System.out.print(" " + j + " ");
}
}
} else if (j == 30) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* 31일로 월을 인쇄하세요.
*/
보호된 무효 print31() {
for (int j = 1; j <= 31; j++) {
문자열 tmp = "";
if (j == 1) {
for (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " ";
if (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} 또 다른 {
System.out.print(tmp);
}
} else if (j > 1 && j < 31) {
if ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} 또 다른 {
만약 (j < 10) {
System.out.print(" " + j + " ");
} 또 다른 {
System.out.print(" " + j + " ");
}
}
} else if (j == 31) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
*매월 제목을 인쇄하세요.
*
* @param 월
*/
protected void printTitle(문자열 월) {
System.out.println(" " + 월 + " " + this.year + " ");
System.out.println("------------------ -- --");
System.out.println("일 월 화 수 목 금 토");
}
//인쇄 형식
// =============================================== 끝
/**
* 달의 영어 이름을 얻으십시오
*
* @param m
* 달의 숫자 표현
* @반품
*/
공개 문자열 getMonth(int m) {
문자열 월 = "";
스위치 (m) {
사례 1:
월 = 1월;
부서지다;
사례 2:
월 = 2월;
부서지다;
사례 3:
월 = 3월;
부서지다;
사례 4:
월 = 4월;
부서지다;
사례 5:
월 = 5월;
부서지다;
사례 6:
월 = 6월;
부서지다;
사례 7:
월 = 7월;
부서지다;
사례 8:
월 = 8월;
부서지다;
사례 9:
월 = 9월;
부서지다;
사례 10:
월 = 10월;
부서지다;
사례 11:
월 = 11월;
부서지다;
사례 12:
월 = 12월;
부서지다;
}
돌아오는 달;
}
공개 int getYear() {
복귀 연도;
}
공개 무효 setYear(int 연도) {
this.year = 연도;
}
공개 int getWhatDayOnJanuaryOne() {
whatDayOnJanuaryOne을 반환합니다.
}
공공 무효 setWhatDayOnJanuaryOne(int whatDayOnJanuaryOne) {
this.whatDayOnJanuaryOne = whatDayOnJanuaryOne;
}
}