說明
- java8引入一套全新時間日期API,位於java.time包下,包下所有類線程安全,且不可變。
- 主要類
- Instan 處理時間戳
- LocalDate 處理日期,如2020-10-23,可存儲生日、紀念日、入職日期等。
- LocalTime 處理不包含日期的時間,如:HH:MM:ss:nnn
- LocalDateTime 處理日期和時間,不包含時區信息
- ZonedDateTime 處理包含時區的日期和時間,偏移量以UTC(格林威治時間)爲準
- MonthDay 處理月日,不包含年,可以用來代表每年重複出現的一些日期或其他組合。
- Clock 獲取時區下時間和日期,代替System.currentTimelnMillis()與TimeZone.getDefault()方法。
- YearMonth 處理年月
- Period 時間差處理類
- DateTimeFormatter時間格式處理類
主要方法
- get***() 獲取年、月、周、日、時、分、秒、納秒
- plus**() 增加年、月、周、日、時、分、秒、納秒
- minus**() 減少年、月、周、日、時、分、秒、納秒
- is**() 比較連個時間前後順序
- equals() 兩個時間是否相同
- parse() 輸入時間格式設置
- format() 輸出時間格式設置
LocalDate 操作當前日期
LocalDate today=LocalDate.now();
System.out.println("當前日期:"+today);
int year =today.getYear();
System.out.println("年:"+year);
int month=today.getMonthValue();
System.out.println("月:"+month);
int day=today.getDayOfMonth();
System.out.println("日:"+day);
int yearDay=today.getDayOfYear();
System.out.println("本年第幾天:"+yearDay);
LocalDate date=LocalDate.of(2019, 12, 30);
System.out.println("今天是否爲2019-12-30?"+date.equals(today));
LocalDate today=LocalDate.now();
System.out.println("當前日期:"+today);
LocalDate nextDay=today.plusDays(1);
System.out.println("一天後日期:"+nextDay);
LocalDate nextYear=today.plusYears(1);
System.out.println("一年後日期:"+nextYear);
LocalDate nextMonth=today.plusMonths(1);
System.out.println("一月後日期:"+nextMonth);
LocalDate nextWeek=today.plus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一週後日期:"+nextWeek);
LocalDate today=LocalDate.now();
System.out.println("當前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
LocalDate beforYear=today.minusYears(1);
System.out.println("一年前日期:"+beforYear);
LocalDate beforMonth=today.minusMonths(1);
System.out.println("一月前日期:"+beforMonth);
LocalDate beforWeek=today.minus(1, ChronoUnit.WEEKS); //支持年、月、日、周
System.out.println("一週前日期:"+beforWeek);
LocalDate today=LocalDate.now();
System.out.println("當前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
System.out.println("當前日期:"+today+"在日期:"+beforDay+"前 "+today.isBefore(beforDay));
System.out.println("當前日期:"+today+"在日期:"+beforDay+"後 "+today.isAfter(beforDay));
LocalDate today=LocalDate.now();
System.out.println("當前日期:"+today);
LocalDate beforDay=today.minusDays(1);
System.out.println("一天前日期:"+beforDay);
Period peri=Period.between(today, beforDay);
System.out.println(today+" 與 "+beforDay+" 相差天數"+peri.getDays()); //支持天、月、周、年
MonthDay操作生日
LocalDate today=LocalDate.now();
LocalDate date=LocalDate.of(1993, 06, 01);
MonthDay birthday=MonthDay.of(date.getMonth(), date.getDayOfMonth());
MonthDay nowDay=MonthDay.from(today);
System.out.println("今天是否是生日?"+birthday.equals(nowDay));
YearMonth操作
YearMonth current=YearMonth.now();
System.out.println("當下年月:"+current+" 月天數:"+current.lengthOfMonth());
Clock 時區操作
System.out.println(Clock.systemDefaultZone()); //獲取當前時區
System.out.println(Clock.systemUTC()); //獲取當前時間
自定義時間格式
String format="20200110";
LocalDate formatDate=LocalDate.parse(format,DateTimeFormatter.BASIC_ISO_DATE);
System.out.println("時間"+formatDate);
format="2020 10 01";
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy dd MM");
formatDate=LocalDate.parse(format, formatter);
System.out.printf("轉換前:%s 轉換後:%s %n",format,formatDate);
formatter=DateTimeFormatter.ofPattern("yyyy dd MM HH:mm");
LocalDateTime time=LocalDateTime.now();
String landding=time.format(formatter);
System.out.println(landding);