LocalDate編寫的日曆小程式---來自Java核心技術卷1
阿新 • • 發佈:2020-12-05
Date類和LocalDate類
這兩個類有重複的功能,但是Date類表示的是時間點,LocalDate表示的是日曆表示法。對於LocalDate來說,儘量不要使用構造器來構造LocalDate類的物件,應該使用靜態工廠(factory)方法。
常用API(Java 8)
匯入:
import java.time.LocalDate;
靜態方法:
static LocalTime now(): 構造一個表示當前日期的物件
static LocalTime of(int year, int month, int day): 用給定日期構造物件
訪問器方法:
int getYear(): 獲取年
int getMonthValue(): 獲取月
int getDayOfMonth(): 獲取日
DayOfWeek getDayOfWeek(): 得到當前日期是星期幾,作為DayOfWeek類的例項,具體星期幾需要呼叫getValue()來獲取
修改方法(但不是更改器):
LocalDate plusDays(int n): 生成當前日期n天后的日期,n為負,則是n天前
LocalDate minusDays(int n): 生成當前日期減去n的日期
package Date; import java.time.*; public class CalendarTest { public static void main(String[] args) { //LocalDate date = LocalDate.now(); //獲取當前系統日期 //date = date.plusDays(-6); //倒退6天 LocalDate date = LocalDate.of(2020, 11, 22); int month = date.getMonthValue(); //月份 int today = date.getDayOfMonth(); //天數 //回到today - (today - 1),也就是第1天的日期 date = date.minusDays(today - 1); DayOfWeek weekday = date.getDayOfWeek(); //該日期對應星期幾 int value = weekday.getValue(); //Sunday對應7 System.out.println("Mon Tue Wed Thu Fri Sat Sun"); for (int i=1; i < value; i++) System.out.print(" "); 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); //增加一天 if (date.getDayOfWeek().getValue() == 1) System.out.println(); //星期一換行 } if (date.getDayOfWeek().getValue() != 1) System.out.println(); } }
Output:
Mon Tue Wed Thu Fri Sat Sun
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22*
23 24 25 26 27 28 29
30