【JAVA-对象与类】打印当月日历 ( LocalDate类)
前言:越发觉得基础知识的薄弱严重影响效率,许多东西会用但一旦出了问题就头大的一批,因此一切归零从最基础的开始学习。以下程序是《Java核心技术 卷1 基础知识》(第10版)第4章节中关于使用预定义类-LocalDate的示例。
package Chapter4;
import java.time.DayOfWeek;
import java.time.LocalDate;
public class Chapter4_42 {
public static void main(String[] args){
/**
* 【当月日历】
* 1.获取当前月共多少天,作为循环次数 - lengthOfMonth()
* 2.获取当前day,用于计算哪天是当前月的1日 - getDayOfMonth()
* 3.获取当前月1日是星期几 - plusDays(),getDayOfWeek()
* 4.备注1:从1日开始排序,若为周日则添加换行符
* 5.备注2:日期小于10 -> 2个空格+day+1个空格 日期大于10 -> 1个空格+day+1个空格
*/
System.out.print("Mon Tue Wed Thu Fri Sat Sun" + "\n");
LocalDate date = LocalDate.now(); //2019-01-30
int days = date.lengthOfMonth(); //31 当月共计天数
LocalDate firstDay = date.plusDays((-date.getDayOfMonth()) + 1); //2019-01-01 当月第一天日期
DayOfWeek firstDays = firstDay.getDayOfWeek(); //TUESDAY 当月第一天是周几
int vaule = firstDays.getValue(); //2 缩进循环次数
int vaule2 = vaule; //2 计数器,用于记录是否为周日
//第一行缩进
for (int i = 1;i < vaule;i++){
System.out.print(" ");
}
for (int d = 1;d <= days;d++){
/**
* 1)日期小于10 -> 2个空格+day+1个空格
* 2)日期大于10 -> 1个空格+day+1个空格
*/
if (d < 10){
System.out.print(" ");
System.out.print(d); //打印日期
System.out.print(" ");
}else {
System.out.print(" ");
System.out.print(d);
System.out.print(" ");
}
//第7天换行并重置
if (vaule2 == 7){
System.out.print("\n");
vaule2 = 0;
}
vaule2 += 1;
}
}
}
【执行结果】