使用java的Date与Calendar打印月份的日历
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class TestCalendar {
public static void main(String[] args) {
System.out.println("输入一个日期字符串,格式如:2019-12-26");
Scanner scanner = new Scanner(System.in);
String strDate = scanner.next();
System.out.println("-----------------------样式一------------------------");
getCalendar1(strDate);
System.out.println("\n-----------------------样式二------------------------");
getCalendar2(strDate);
}
//样式1
public static void getCalendar1(String strDate) {
Calendar cal = strToCal(strDate);
//得到月份的天数
int dayNum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//得到1号是星期几(1-7),星期日为1,星期六为7
int weekNum = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("日\t一\t二\t三\t四\t五\t六");
//输出1号前面对应的空格
for(int i=1; i<weekNum; i++) {
System.out.print("\t");
}
//打印日历
for(int i=1; i<=dayNum; i++) {
System.out.print(i+"\t");
//判断是否换行
if(weekNum%7 ==0) {
System.out.println();
}
weekNum++;
}
}
//样式二
public static void getCalendar2(String strDate) {
Calendar cal = strToCal(strDate);
//得到月份的天数
int dayNum = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
//得到1号是星期几(1-7),星期日为1,星期六为7
int n = (cal.get(Calendar.DAY_OF_WEEK)+6)%7;
//当1号为星期日时把week设置为7
int weekNum = n==0?7:n;
System.out.println("一\t二\t三\t四\t五\t六\t日");
//输出1号前面对应的空格
for(int i=1; i<weekNum; i++) {
System.out.print("\t");
}
//打印日历
for(int i=1; i<=dayNum; i++) {
System.out.print(i+"\t");
//判断是否换行
if(weekNum%7 ==0) {
System.out.println();
}
weekNum++;
}
}
//String转为Calendar
public static Calendar strToCal(String strDate) {
//格式化的样式
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
//String转Date
Date dt = df.parse(strDate);
//得到Calendar实例
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
//把日期设置为月份的第一日
cal.set(Calendar.DAY_OF_MONTH, 1);
return cal;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}