java初學(xué)者,寫的不好,歡迎大佬指導(dǎo).
效果
#控制臺打印日歷
main
package com.test1;
import java.util.Scanner;
// 輸入日期 yyyy-MM-ss 打印日歷
public class CalendarTest1 {
public static void main(String[] args) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("fm yyyy-MM-dd ");
String scDate = sc.next();
CalendarPrint c = new CalendarPrint();
c.printCalendar(scDate);
} catch (Exception e) {
e.printStackTrace();
// e.printStackTrace(System.err);
System.out.println("時間格式為 yyyy-MM-dd");
}
}
}
CalendarPrint
package com.test1;
import java.util.Calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class CalendarPrint {
private final Calendar cal = Calendar.getInstance();
private int day;
private int week;
private int MonthMaxDays;
private int MonthMinDays;
private final String[] weeks = {"日", "一", "二", "三", "四", "五", "六"};
private String sy;
private String sm;
private int CalcWeek() {
String sd = Integer.toString(MonthMinDays);
String sysmsd = sy + "-" + sm + "-" + (sd.length() >= 2 ? sd : "0" + sd);
Calendar cal1 = calendarGetInstanceSetTime(jsdvla(sysmsd));
return cal1.get(Calendar.DAY_OF_WEEK);
}
private int CalcWeek(int i) {
String sd = Integer.toString(i);
String sysmsd = sy + "-" + sm + "-" + (sd.length() >= 2 ? sd : "0" + sd);
Calendar cal1 = calendarGetInstanceSetTime(jsdvla(sysmsd));
return cal1.get(Calendar.DAY_OF_WEEK);
}
private java.sql.Date jsdvla(String date) {
return java.sql.Date.valueOf(date);
}
private Calendar calendarGetInstanceSetTime(java.sql.Date date) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date);
return cal1;
}
public void printCalendar(String d) throws Exception {
try {
if (d.isEmpty() || "\"\"".equals(d)) {
throw new Exception();
}
cal.setTime(jsdvla(d));
day = cal.get(Calendar.DAY_OF_MONTH);
week = cal.get(Calendar.DAY_OF_WEEK);
MonthMaxDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
MonthMinDays = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
// sy = String.valueOf(cal.get(Calendar.YEAR));
// sm = String.valueOf(cal.get(Calendar.MONTH));
// ||
sy = Integer.toString(cal.get(Calendar.YEAR));
sm = Integer.toString(cal.get(Calendar.MONTH) + 1);
for (String i:weeks) {
System.out.print("日".equals(i) ? i : "\t" + i);
}
System.out.println();
for (int j = 1; j < CalcWeek() - 1; j++) {
System.out.print("\t");
}
for (int i = MonthMinDays; i <= MonthMaxDays; i++) {
int cw = CalcWeek(i);
if (day == i) {
System.out.print(cw != 1 ? "\t" + i + "*" : i + "*");
} else {
System.out.print(cw != 1 ? "\t" + i : i);
}
if (cw == 7) {
System.out.println();
}
}
} catch (Exception e) {
throw new Exception();
}
}
public String getSm() {
return sm;
}
public void setSm(String sm) {
this.sm = sm;
}
public String getSy() {
return sy;
}
public void setSy(String sy) {
this.sy = sy;
}
public String[] getWeeks() {
return weeks;
}
public int getMonthMinDays() {
return MonthMinDays;
}
public void setMonthMinDays(int monthMinDays) {
MonthMinDays = monthMinDays;
}
public int getMonthMaxDays() {
return MonthMaxDays;
}
public void setMonthMaxDays(int monthMaxDays) {
MonthMaxDays = monthMaxDays;
}
public int getWeek() {
return week;
}
public void setWeek(int week) {
this.week = week;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public Calendar getCal() {
return cal;
}
public CalendarPrint() {}
}