1.日期時間處理類
- JDK8通過發布新的Date-Time API(JSR 310)來進一步加強對日期與時間的處理
- 新增了很多常見的API,如日期/時間的比較,加減,格式化等
- 包所在位置java.time
- 核心類
LocalDate:日期 LocalTime:時間 LocalDateTime:日期時間
- 常見API
LocalDate today = LocalDate.now(); System.out.println(today); //getYear() int 獲取當前日期的年份 //getMonth() Month 獲取當前日期的月份對象 //getMonthValue() int 獲取當前日期是第幾月 //getDayOfWeek() DayOfWeek 表示該對象表示的日期是星期幾 //getDayOfMonth() int 表示該對象表示的日期是這個月第幾天 //getDayOfYear() int 表示該對象表示的日期是今年第幾天 //withYear(int year) LocalDate 修改當前對象的年份 //withMonth(int month) LocalDate 修改當前對象的月份 //withDayOfMonth(int dayOfMonth) LocalDate 修改當前對象在當月的日期 //plusYears(long yearsToAdd) LocalDate 當前對象增加指定的年份數 //plusMonths(long monthsToAdd) LocalDate 當前對象增加指定的月份數 //plusWeeks(long weeksToAdd) LocalDate 當前對象增加指定的周數 //plusDays(long daysToAdd) LocalDate 當前對象增加指定的天數 //minusYears(long yearsToSubtract) LocalDate 當前對象減去指定的年數 //minusMonths(long monthsToSubtract) LocalDate 當前對象減去指定的月數 //minusWeeks(long weeksToSubtract) LocalDate 當前對象減去指定的周數 //minusDays(long daysToSubtract) LocalDate 當前對象減去指定的天數 //compareTo(ChronoLocalDate other) int 比較當前對象和other對象在時間上的大小,返回值如果為正,則當前對象時間較晚 //isBefore(ChronoLocalDate other) boolean 比較當前對象日期是否在other對象日期之前 //isAfter(ChronoLocalDate other) boolean 比較當前對象日期是否在other對象日期之后 //isEqual(ChronoLocalDate other) boolean 比較兩個日期對象是否相等
2.日期時間格式化和計算時間差
- 常用的占位符
y 四位數年份 M 月 d 日 H 時(24小時制) h 時(12小時制) m 分 s 秒 S 毫秒
- JDK8之后,引入線程安全的日期時間轉換類DateTimeFormatter
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Test { public static void main(String[] args) { LocalDateTime today = LocalDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formatDate = dtf.format(today); System.out.println(formatDate); } }
- 計算日期時間差java.time.Duration
import java.time.Duration; import java.time.LocalDateTime; public class Test { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); LocalDateTime old = LocalDateTime.of(2020, 1, 20, 15, 58, 0); Duration duration = Duration.between(old, now); System.out.println(duration.toDays());// 相差的天數 System.out.println(duration.toHours());// 相差的小時數 System.out.println(duration.toMinutes());// 相差的分鍾數 System.out.println(duration.toMillis());// 相差的毫秒數 System.out.println(duration.toNanos());// 相差的納秒數 } }