Java 8 日期大全筆記

本文是依據網絡文章進行的彙總,持續更新帖

爲何要學 Java 8 的日期時間方法呢?SimpleDateFormat 不是很好用嗎?我相信這種聲音不在少數,緣由有:java

  • SimpleDateFormat 非線程安全
  • 擁抱新技術,沒有什麼很差的,這纔是 Stay hungry

獲取當前時間

Long millisecond = Instant.now().toEpochMilli();  // 精確到毫秒
Long second = Instant.now().getEpochSecond();// 精確到秒

將Long類型的時間戳轉成字符串

DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time),ZoneId.systemDefault()));

將字符串時間轉成Long類型的時間戳

DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse("2018-05-29 13:52:50", ftf);
LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

Date 與 LocalDateTime 互轉

//將java.util.Date 轉換爲java8 的java.time.LocalDateTime,默認時區爲東8區
    public static LocalDateTime dateConvertToLocalDateTime(Date date) {
        return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
    }
 
   
    //將java8 的 java.time.LocalDateTime 轉換爲 java.util.Date,默認時區爲東8區
    public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
    }

日期變換

/**
     * 取本月第一天
     */
    public static LocalDate firstDayOfThisMonth() {
        LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.firstDayOfMonth());
    }
 
    /**
     * 取本月第N天
     */
    public static LocalDate dayOfThisMonth(int n) {
        LocalDate today = LocalDate.now();
        return today.withDayOfMonth(n);
    }
 
    /**
     * 取本月最後一天
     */
    public static LocalDate lastDayOfThisMonth() {
        LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.lastDayOfMonth());
    }
 
    /**
     * 取本月第一天的開始時間
     */
    public static LocalDateTime startOfThisMonth() {
        return LocalDateTime.of(firstDayOfThisMonth(), LocalTime.MIN);
    }
 
 
    /**
     * 取本月最後一天的結束時間
     */
    public static LocalDateTime endOfThisMonth() {
        return LocalDateTime.of(lastDayOfThisMonth(), LocalTime.MAX);

Java 8 時間,字符串和Long時間戳互轉安全

Java8 LocalDateTime獲取時間戳(毫秒/秒)、LocalDateTime與String互轉、Date與LocalDateTime互轉網絡

相關文章
相關標籤/搜索