日历的编写
1.键盘信息录入
查看需要知道的年份的日期。
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你想要查看的日期(输入格式:2022-2-12):");
String i = scanner.next();
System.out.println(i);
2.将String类型转化为日期类型:
java.sql.Date d = java.sql.Date.valueOf("2022-2-1");
2.1:将Date类型转化为Calendar类型:
Calendar cal = Calendar.getInstance();
cal.setTime(d);
3.输出日历的星期:
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
4.获取输入的年份信息中的月数中的最大值:
int maxDay = cal.getActualMaximum(Calendar.DATE);
5.遍历本月最大的天的数字
for (int i = 1; i <=maxDay ; i++) {
//7.在当天的日期上加上*号
if (nowDay==i){
System.out.print(i+"*\t");
}else {
System.out.print(i+"\t");
}
count++;
if (count % 7 == 0) {
System.out.println();
}
}
6.引用一个计数器,用来计算换行(每7个数字之后进行换行):
int count = 0;
7.在当天的日期上加上*号
if (nowDay==i){
System.out.print(i+"*\t");
}else {
System.out.print(i+"\t");
}
count++;
if (count % 7 == 0) {//表示的是满足在第七个数字进行换行
System.out.println();
}
8.求出当天日期
int nowDay = cal.get(Calendar.DATE);
9.求出本月的第一天,将日期置成本月的第一天
cal.set(Calendar.DATE,1);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
10.求出前面的空格数
int space = dayofweek-1;
11.遍历space:
for (int i = 1; i <=space ; i++) {
System.out.print("\t");
}
源码展示+注释:
import java.util.Calendar;
public class DateTest04 {
public static void main(String[] args) {
//1.键盘信息录入
// Scanner sc = new Scanner(System.in);
// System.out.print("请输入你想要查看的日期(输入格式:2022-2-12):");
// String i = sc.next();
// System.out.println(i);
//2.将接收的String类型转化为Date类型:
java.sql.Date d = java.sql.Date.valueOf("2022-2-1");
//2.1将Date类型转化为Calendar类型:
Calendar cal = Calendar.getInstance();
cal.setTime(d);
//System.out.println(cal);
//3.输出日历的星期
System.out.println("日\t一\t二\t三\t四\t五\t六\t");
//4.先获取本月最大的天数
int maxDay = cal.getActualMaximum(Calendar.DATE);
//System.out.println(maxDay);//输出当月对大的天数
//8.求出当天日期
int nowDay = cal.get(Calendar.DATE);
//9.求出本月的第一天
//9.1将日期置成本月的第一天
cal.set(Calendar.DATE,1);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
System.out.println("这是这个月第"+dayofweek+"天");
//10.求出前面的空格数
int space = dayofweek-1;
//6.引用一个计数器,用来计算换行(每7个数字之后进行换行):
int count = space;
//11.遍历space:
for (int i = 1; i <=space ; i++) {
System.out.print("\t");
}
//5.遍历本月最大的天的数字
for (int i = 1; i <=maxDay ; i++) {
//7.在当天的日期上加上*号
if (nowDay==i){
System.out.print(i+"*\t");
}else {
System.out.print(i+"\t");
}
count++;
if (count % 7 == 0) {//表示的是满足在第七个数字进行换行
System.out.println();
}
}
//sc.close();
}
}
结果展示: