JDK8中 LocalDate、LocalTime 、LocalDateTime 的用法介紹

在JAVA中,常用的處理日期和時間的類主要有Date,Calendar,而在JDK1.8中,新增了兩個處理日期和時間的類,一個是LocalDate,另一個是LocalTime,下面我來介紹一下這兩個類中常用方法的用法。

1、LocalDate

  LocalDate主要是用來處理日期的類,主要有以下方法:

方法 說明 舉例
LocalDate.now() 獲取當前日期
LocalDate localDate = LocalDate.now();
System.out.println(localDate);

 運行結果爲:2019-01-07

LocalDate.of(int year, int month, int dayOfMonth)

根據參數設置日期,參數分別爲年,月,日

LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate);

 運行結果爲:2019-01-07

localDate.getDayOfMonth()

localDate.getDayOfWeek()

localDate.getDayOfYear()

獲取當前日期是所在月的第幾天

獲取當前日期是星期幾(星期的英文全稱)

獲取當前日期是所在年的第幾天

LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.getDayOfMonth());
System.out.println(localDate.getDayOfWeek());
System.out.println(localDate.getDayOfYear());

運行結果爲:7,MONDAY,7

localDate.getMonth()

localDate.getMonthValue()

localDate.lengthOfMonth()

獲取當前日期所在月份(月份的英文全稱)

獲取當前日期所在月份的數值

獲取當前日期所在月份有多少天

LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.getMonth());
System.out.println(localDate.getMonthValue());
System.out.println(localDate.lengthOfMonth());

運行結果爲:JANUARY,1,31


 

localDate.lengthOfYear()

localDate.isLeapYear()

獲取當前日期所在年有多少天

獲取當前日期所在年是否是閏年

LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.lengthOfYear());
System.out.println(localDate.isLeapYear());

 運行結果爲:365,false

localDate.withDayOfMonth(int dayOfMonth)

localDate.withDayOfYear(int dayOfYear)

localDate.withMonth(int month)

localDate.withYear(int year)

with開頭的方法,我的理解是將參數替換localDate中的對應

屬性,重新計算得到新的日期。

將參數中的"日"替換localDate中的"日"

將參數中的天數替換localDate中的天數

將參數中的"月"替換localDate中的"月"

將參數中的"年"替換localDate中的"年"

LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.withDayOfMonth(2));
System.out.println(localDate.withDayOfYear(40));
System.out.println(localDate.withMonth(2));
System.out.println(localDate.withYear(2020));

 運行結果爲:

2019-01-02,

2019-02-09,

2019-02-07,

2020-01-07

localDate.minusDays(long days)

localDate.minusWeeks(long weeks)

localDate.minusMonths(long months)

localDate.minusYears(long years)

localDate.plusDays(long days)

localDate.plusWeeks(long weeks)

localDate.plusMonths(long months)

localDate.plusYears(long years) 

將當前日期減一天

將當前日期減一週

將當前日期減一月

將當前日期減一年

將當前日期加一天

將當前日期加一週

將當前日期加一月

將當前日期加一年

2、LocalTime

  LocalTime主要是用來處理時間的類,主要有以下方法:

方法 說明 舉例
LocalTime.now() 獲取當前時間
LocalTime localTime = LocalTime.now();
System.out.println(localTime);

 運行結果爲:22:53:44.277

LocalTime.of(int hour, int minute) 

LocalTime.of(int hour, int minute, int second)

根據參數設置時間,參數分別爲時,分

根據參數設置時間,參數分別爲時,分,秒

LocalTime localTime = LocalTime.of(12,35,59);
System.out.println(localTime);
localTime = LocalTime.of(12,35);
System.out.println(localTime);

 運行結果爲:12:35:59,12:35

localTime.getHour()

localTime.getMinute()

localTime.getSecond()

獲取當前時間的小時數

獲取當前時間的分鐘數

獲取當前時間的秒數

LocalTime localTime = LocalTime.of(12,35,59);
System.out.println(localTime.getHour());
System.out.println(localTime.getMinute());
System.out.println(localTime.getSecond());

運行結果爲:12,35,59

localTime.withHour(int hour)

localTime.withMinute(int minute)

localTime.withSecond(int second)

with開頭的方法,我的理解是將參數替換localTime中的對應屬性,

重新計算得到新的時間。

將參數中的"小時"替換localTime中的"小時"

將參數中的"分鐘"替換localTime中的"分鐘"

將參數中的"秒"替換localTime中的"秒"

LocalTime localTime = LocalTime.of(12,35,59);
System.out.println(localTime.withHour(1));
System.out.println(localTime.withMinute(1));
System.out.println(localTime.withSecond(1));

 運行結果爲:

01:35:59
12:01:59
12:35:01

localTime.minusHours(long hours)

localTime.minusMinutes(long minutes)

localTime.minusSeconds(long seconds)

localTime.plusHours(long hours)

localTime.plusMinutes(long minutes)

localTime.plusSeconds(long seconds)

將當前時間減一小時

將當前時間減一分鐘

將當前時間減一秒

將當前時間加一小時

將當前時間加一分鐘

將當前時間加一秒

3、  TemporalAdjuster (時間矯正器   )

        //獲取下個週末
		LocalDate date = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
		System.out.println(date);

		//獲取下一個工作日
		LocalDateTime ldt1 = LocalDateTime.now();
		LocalDateTime ldt5 = ldt1.with((l)->{
			LocalDateTime ldt4 = (LocalDateTime) l;
			DayOfWeek dayOfWeek = ldt4.getDayOfWeek();
			if(dayOfWeek.equals(DayOfWeek.FRIDAY)){
				return ldt4.plusDays(3);
			}else if(dayOfWeek.equals(DayOfWeek.SATURDAY)){
				return ldt4.plusDays(2);
			}else {
				return ldt4.plusDays(1);
			}
		});
		System.out.println(ldt5);

4、  日期轉換

       DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
		LocalDateTime ldf = LocalDateTime.now();
		String str1 = ldf.format(dtf1);
		System.out.println(str1);
		
		DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE;
		LocalDate date2 = LocalDate.now().parse("2019-08-28",dtf);
		System.out.println(date2);

5、  日期計算

//		Duration  計算兩個時間的間隔
		LocalTime now1 = LocalTime.now();
		LocalTime now2 = LocalTime.now();
		Duration between = Duration.between(now1,now2);
		System.out.println(between.getSeconds());
		//		Period  計算兩個日期的間隔
		LocalDate dateTime1 = LocalDate.of(2018,8,28);
		LocalDate dateTime2 = LocalDate.now();
		Period period = Period.between(dateTime1,dateTime2);
		System.out.println(period.getYears()+"-"+period.getMonths()+"-"+period.getDays());

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章