Java 的 LocalDate 实现实时日历
程序员文章站
2022-05-16 21:26:04
...
LocalDate 的API :
Static LocalTime now( ) ; 构造一个表示当前日期的对象
Static LocalTime of ( int year , int month , int day ) ; 构造一个表示给定日期的对象
Int getYear ( ) ; 得到当前的 年
Int getMonth( ) ; 得到当前的 月
Int getDayOfMonth( ) ; 得到当前的 日;
DayOfWeek getDayOfWeek
得到当前日期是星期几,作为 DayOfWeek 类的一个实例返回, 得到一个1~7的数,1表示星期一, 7表示星期日;
LocalDate plusDays( int n ) ; 生成当前日期之后 n 天的日期;
LocalDate minusDays( int n );生成当前日期之前 n 天的日期;
输出一个当前月的日历:
根据LocalDate 实现一个日历,在控制台打印出,当月的日历,并在当天 添加 * 标志; 最后样式如下
import java.time.DayOfWeek;
import java.time.LocalDate;
public class CalendarTest {
public static void main(String[] args) {
LocalDate date = LocalDate.now();//当前的日期。
int month = date.getMonthValue();
int today = date.getDayOfMonth();
//minusDays(int n) 函数返回当前日期之前 n 天的 日期。
//如果今天是3号,则往前找2天,找到了1号的位置,找到月初的日期,1号是哪天
date = date.minusDays(today -1);
DayOfWeek weekday = date.getDayOfWeek(); //获取当前为星期几
int value = weekday.getValue();//当前是星期几的值
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
//日历的第一行的处理,如果今天是周三,则前面有两个空位置。
//每个位置是 4个空格(3个数据长度+一个空格);
for (int i = 1; i < value; i++) {
System.out.print(" ");//此处 4 格空格
}
while (date.getMonthValue() == month) {
System.out.printf("%3d",date.getDayOfMonth());
if (date.getDayOfMonth() == today) { //如果是今天,则加个标记
System.out.print("*");
}else {
System.out.print(" "); //不是当前日期则加 空格
}
date = date.plusDays(1); //当前日期加 1 天, 往后移
if (date.getDayOfWeek().getValue() == 1){//后一天是周一则换行
System.out.println();
}
}
if (date.getDayOfWeek().getValue() != 1) {
System.out.println();
}
}
}