新版JDK8日期時間及其格式化


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());// 相差的納秒數
        }
    }
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM