学习Java的第好多天
简单的日历
完整代码在最后
- 首先说一下思路
我们一直想要显示一个日历想要让他按照我们的心意显示,但是我们知道每一年的每一个月都不一样的,所以我们必须设置一个通用的格式。
首先我们在我们日历的最顶端显示星期日到星期六。因为在英文里面周日是第一天周六是最后一天。
System.out.println(“日\t一\t二\t三\t四\t五\t六”);
- 然后第二步,我们要把一号到三十一号全部显示出来,
for(int i=1;i<=31;i++) {
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"\t");
- 这时候我们发现为什么他到六号还是一直往后显示,我们没办法也不能一个一个弄啊,只能给他加了一个判断, 这个呢可以直接判断我们输出的日期是不是和周六相等,如果想等的话就换行。
if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
System.out.print("\n");
}
- 我们这个时候发现为什么第一个到3号就直接换行了,才发现原来这一个时间是一号的话是周四,但是我们的一号是周一所以,我们再次加一个判断,判断咱们给的一号到底是周几。
for(int i=0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++) {
System.out.print("\t");
}
- 到这我们一切都结束了,把该导入的包都导入一下。就可以在控制带显示输出了。
package cn.wang.test;
import java.util.*;
import javax.sql.rowset.JoinRowSet;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class TestCalendar2 {
public static void main(String[] args) throws ParseException {
String str="2020-10-10";
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Date date=df.parse(str);
Calendar c=new GregorianCalendar();
c.setTime(date);
System.out.println("日\t一\t二\t三\t四\t五\t六");
c.set(Calendar.DAY_OF_MONTH, 1);
for(int i=0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++) {
System.out.print("\t");
}
for(int i=1;i<=31;i++) {
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"\t");
if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
System.out.print("\n");
}
c.add(Calendar.DAY_OF_MONTH, 1);
}
}
}