1. 代码
package tk.javazhangwei;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/***
* 可视化日历程序
* @author zw
*
*/
public class Test01 {
public static void main(String[] args){
System.out.println("欢迎使用,本程序为获取当前输入年月日并且打印本月日历");
System.out.println("请输入日期(按照格式:2017-07-11)");
Scanner scanner = new Scanner(System.in);
String inputstr = scanner.nextLine();
String temp = inputstr;
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");//格式化字符串
try {
Date date = format.parse(temp);//字符串转为时间
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int day = calendar.get(Calendar.DATE);//获取输入的天数
calendar.set(Calendar.DATE, 1);//将日期变为1号,母的就是算出1号是周几
// System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//一号属于周几
// System.out.println(calendar.getActualMaximum(Calendar.DATE));//这月最后一天是30还是31
int maxDate = calendar.getActualMaximum(Calendar.DATE);//本月最大的天数
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=0;i<calendar.get(Calendar.DAY_OF_WEEK)-1;i++){//从周几开始打
System.out.print("\t");
}
for(int i=1;i<=maxDate;i++){
if(i==day){//遇到当前日期,打印*
System.out.print("*");
}
System.out.print(i+"\t");
int w =calendar.get(Calendar.DAY_OF_WEEK);
if(w==Calendar.SATURDAY){//每隔周六换行
System.out.print("\n");
}
calendar.add(Calendar.DATE, 1);//将日期加1
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2. 运行截图