Java日历
知识点来源
源自Java核心技术卷一,第四章对象与类,98页
初心
Java爱好者一枚,最近在看Java核心技术卷一(对象与类),学习到了Java类库中的日历表示法的LocalDate类,所以又开始写博客做分享了,技术很初级,莫介意哈,嘿嘿…
没学到过的可以了解哈,学过的也可以看一哈,加深映像…
希望对游览到此的你有所帮助…
出发点
标准的Java类库分别包含两个类:
一个是用来表示时间点的Date类
另外一个呢,是用来表示大家熟悉的日历表示法的LocalDate类
虽然Date也提供了诸多方法来处理日历,但是Java类库设计者觉得应当单独提供类来处理日历,所以Date中处理日历的方法被标记为废弃不用。虽然任然可以在程序中使用这些方法,不过如果这样做,编译会出现警告。最好还是不要使用这些废弃不用的方法,因为将来的某个类库版本很有可能将它们完全删除。
LocalDate方法
static LocalDate now() 构造一个当前日期对象
static LocalDate now(int year,int month,int day) 构造一个表示给定日期对象
int getyear() 得到当前年
int getMonthValue() 得到当前月
int getDayOfMonth() 得到当前日
DayOfWeek getDayOfWeek 得到当前日期时星期几,作为DayOfWeek类的一个实例返回。调用getVal来得到1-7之间一个数,1星期一,7星期日
LocalDate plusDays(int n) 生成当前日期n天后
LocalDate minusDays(int n) 生成当前日期n天前
当前月的日历遍历
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalTime;
public class LocalDateClass {
public static void main(String[] args) {
//构造一个日历对象,初始化当前日期和时间
LocalDate date=LocalDate.now();
//获取当前的月,赋值给变量month
int month=date.getMonthValue();
//获取当前的日,赋值给today
int today=date.getDayOfMonth();
//将date时间点设置为这个月的第一天
date=date.minusDays(today-1);
//获取date时间点(该月的第一天)是星期几,1表示星期一,7表示星期日
DayOfWeek weekday=date.getDayOfWeek();
int value=weekday.getValue();
//设置日历的星期的列名
System.out.println("日 一 二 三 四 五 六");
//根据今天为星期几,设置第一行星期几前面的都用空行填充,for循环遍历
for(int i=1;i<value;i++){
System.out.print(" ");
}
//因为每个月份的天数都会变化的,所以采用while循环遍历,判断条件为:获取date时间点的月份与之前得到的变量month比较
//从date时间点的1号开始遍历
while(date.getMonthValue()==month){
//输出该时间点,月份的第一天,1号(后面的每次循环都加1)
System.out.printf("%3d",date.getDayOfMonth());
//如果遍历的号数与当天的日的号数相同,则在在该日做*号标记
if(date.getDayOfMonth()==today){
System.out.print("* ");
}else{
//否则不做标记,加空格,格式化输出
System.out.print(" ");
}
//重新赋值date,在遍历的号数加1
date=date.plusDays(1);
//当加1后的号数,他所对应的星期为1时,则换行
if(date.getDayOfWeek().getValue()==1){
System.out.println();
}
}
}
}