最近有点时间,项目上不是很忙。翻开了书架上落灰很久的java技术相关书籍,不翻不知道,一看就意识到自己对java的基础都没有掌握的很牢靠-_-,于是趁此机会,打算好好学习一番。
【简介】
该类从JDK1.8后出现。LocalDate
表示格式为yyyy-MM-dd
的日期。
LocalDate 是不可变的日期时间对象,通常被视为“年月日”,也可以访问其他日期字段,例如日期,月份,星期等。该类不存储或表示时间或时区,它是日期的描述,用于生日。
ISO-8601 日历系统是当今世界绝大多数的现代民用日历系统。它相当于今天的闰年规则一直使用于日常生活的公历日历系统。对于如今的大多数应用,ISO-8601规则是完全合适的。
【常用方法】
LocalDate localDate = LocalDate.now();//2022-03-23 今天日期
LocalDate minusDays = localDate.minusDays(1);//2022-03-22 今天前一天日期
LocalDate plusDays = localDate.plusDays(1);//2022-03-24 今天后一天日期
int year = localDate.getYear();//2022 今天所属年份
int month=localDate.getMonth().getValue();//3 今天所属月份
int dayOfYear = localDate.getDayOfYear();//82 今天是今年的第几天
int dayOfMonth = localDate.getDayOfMonth();//23 今天是本月的第几天
int dayOfWeek = localDate.getDayOfWeek().getValue();//3 今天是本周的第几天(即周几)
【与Date异同】
Date | LocalDate | |
所属包 | java.util | java.time |
安全 | 线程不安全 | 线程安全 |
版本 | JDK1.0 | JDK1.8 |
日历系统 | UTC | ISO-8601 |
参考日期 | 1970 年 1 月 1 日00:00:00 | 0000年1月1日 |
【示例】
需求:打印当月的日历信息,当天用*号标记,日历头使用星期表示
public class MyCalendar {
public static void main(String[] args) {
LocalDate date=LocalDate.now();
int month=date.getMonthValue();
int today=date.getDayOfMonth();
date=date.minusDays(today-1);
DayOfWeek weekDay=date.getDayOfWeek();
int value=weekDay.getValue();
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for(int i=1;i<value;i++){
System.out.printf(" ");
}
while(date.getMonthValue()==month){
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth()==today){
System.out.printf("*");
}else{
System.out.printf(" ");
}
date=date.plusDays(1);
if(date.getDayOfWeek().getValue()==1) {
System.out.println();
}
}
if(date.getDayOfWeek().getValue()!=1) {
System.out.println();
}
}
}
输出: