在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 |
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());