import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 做一个显示用户输入的日历
* @author Dreamweaver
*
*/
public class CalendarDemo {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个日期(2018-1-1)");
String next = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf.parse(next);
//打印表头
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
//ca对象负责打印日期
Calendar ca = Calendar.getInstance();
//cc对象负责逻辑操作
Calendar cc = Calendar.getInstance();
//将用户输入的日期设置到日历对象中
ca.setTime(parse);
cc.setTime(parse);
//获取用户输入的当月1号是星期几,将当前月的日期改为1号
cc.set(Calendar.DATE,1);
//获取当前月的1号是周几,由此打印空格
int first = cc.get(Calendar.DAY_OF_WEEK);
if(first==1) {
System.out.print("\t\t\t\t\t\t");
}else {
for(int i=2;i<first;i++) {
System.out.print("\t");
}
}
//获取本月最大天数
int max = ca.getActualMaximum(Calendar.DATE);
for(int i=1;i<=max;i++) {
//将变化的日期赋值给cc对象
cc.set(Calendar.DATE,i);
//将日期i装到StringBuilder中方便打印*
StringBuilder sb = new StringBuilder();
sb.append(i);
//当用户输入日期是这一天时,在这个日期后加*,否则就顺序打印
if(i==ca.get(Calendar.DATE)) {
sb.append("*\t");
System.out.print(sb);
}else {
System.out.print(sb.append("\t"));
}
//当日期是周日的时候进行换行操作
if(cc.get(Calendar.DAY_OF_WEEK)==1) {
System.out.println();
}
}
}
}
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
* 做一个显示用户输入的日历
* @author Dreamweaver
*
*/
public class CalendarDemo {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个日期(2018-1-1)");
String next = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parse = sdf.parse(next);
//打印表头
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
//ca对象负责打印日期
Calendar ca = Calendar.getInstance();
//cc对象负责逻辑操作
Calendar cc = Calendar.getInstance();
//将用户输入的日期设置到日历对象中
ca.setTime(parse);
cc.setTime(parse);
//获取用户输入的当月1号是星期几,将当前月的日期改为1号
cc.set(Calendar.DATE,1);
//获取当前月的1号是周几,由此打印空格
int first = cc.get(Calendar.DAY_OF_WEEK);
if(first==1) {
System.out.print("\t\t\t\t\t\t");
}else {
for(int i=2;i<first;i++) {
System.out.print("\t");
}
}
//获取本月最大天数
int max = ca.getActualMaximum(Calendar.DATE);
for(int i=1;i<=max;i++) {
//将变化的日期赋值给cc对象
cc.set(Calendar.DATE,i);
//将日期i装到StringBuilder中方便打印*
StringBuilder sb = new StringBuilder();
sb.append(i);
//当用户输入日期是这一天时,在这个日期后加*,否则就顺序打印
if(i==ca.get(Calendar.DATE)) {
sb.append("*\t");
System.out.print(sb);
}else {
System.out.print(sb.append("\t"));
}
//当日期是周日的时候进行换行操作
if(cc.get(Calendar.DAY_OF_WEEK)==1) {
System.out.println();
}
}
}
}