java8新增time時間接口使用說明

說明

  • java8引入一套全新時間日期API,位於java.time包下,包下所有類線程安全,且不可變。
  • 主要類
    1. Instan 處理時間戳
    2. LocalDate 處理日期,如2020-10-23,可存儲生日、紀念日、入職日期等。
    3. LocalTime 處理不包含日期的時間,如:HH:MM:ss:nnn
    4. LocalDateTime 處理日期和時間,不包含時區信息
    5. ZonedDateTime 處理包含時區的日期和時間,偏移量以UTC(格林威治時間)爲準
    6. MonthDay 處理月日,不包含年,可以用來代表每年重複出現的一些日期或其他組合。
    7. Clock 獲取時區下時間和日期,代替System.currentTimelnMillis()與TimeZone.getDefault()方法。
    8. YearMonth 處理年月
    9. Period 時間差處理類
    10. 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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章