Java8日期時間——LocalDateTime的使用以及相互轉換

日期時間處理

Java8內每個類含義

在 Java8 之前操作時間,用的都是 Date 和 Calendar 類,但這兩個類,操作起來及其繁瑣,且在時間轉換、時區轉換的時候也很麻煩,因此 JDK 官方在 8 之後,引入了 LocalDateTime 以及相關類,通過新的類來定義和操作時間,也十分的簡單清晰,下面我們就來我看一下如何操作。

  1. Instant: 時間戳
  2. Duration: 持續時間, 時間差
  3. LocalDate: 只包含⽇期, ⽐如: 2016-10-20
  4. LocalTime: 只包含時間, ⽐如: 231210
  5. LocalDateTime: 包含⽇期和時間, ⽐如: 2016-10-20 231421
  6. Period: 時間段
  7. ZoneOffset: 時區偏移量, ⽐如: +8:00
  8. ZonedDateTime: 帶時區的時間
  9. Clock: 時鐘, ⽐如獲取⽬前美國紐約的時間

代碼實現

localdatetime -> 其他類型

 // =================================================================================

    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        Date date = Date.from(localDateTime.toInstant(ZoneOffset.ofHours(8)));
        return date;
    }

    public static Date localDateTimeToDate(LocalDateTime localDateTime, ZoneOffset zoneOffset) {
        Date date = Date.from(localDateTime.toInstant(zoneOffset));
        return date;
    }

    public static long localDateTimeToTimestamp(LocalDateTime localDateTime) {
        long timestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).getEpochSecond();
        return timestamp;
    }

    public static long localDateTimeToTimestamp(LocalDateTime localDateTime, ZoneOffset zoneOffset) {
        long timestamp = localDateTime.toInstant(zoneOffset).getEpochSecond();
        return timestamp;
    }


    public static String localDateTimeToString(LocalDateTime localDateTime) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String string = dateTimeFormatter.format(localDateTime);
        return string;
    }

    public static String localDateTimeToString(LocalDateTime localDateTime, DateTimeFormatter dateTimeFormatter) {
        String string = dateTimeFormatter.format(localDateTime);
        return string;
    }

    public static String localDateTimeToString(LocalDateTime localDateTime, String pattern) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
        String string = dateTimeFormatter.format(localDateTime);
        return string;
    }

date -> 其他類型

// =================================================================================
    public static long dateToTimeStamp(Date date) {
        return date.getTime();
    }

    public synchronized static String dateToString(Date date, SimpleDateFormat simpleDateFormat) {
        return simpleDateFormat.format(date);
    }

    public static String dateToString(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.format(date);
    }

    public static LocalDateTime dateToLocalDateTime(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        return localDateTime;
    }

    public static LocalDateTime dateToLocalDateTime(Date date, ZoneId zoneId) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), zoneId);
        return localDateTime;
    }

timestamp -> 其他類型

    // =================================================================================
    public static Date timestampToDate(long timestamp) {
        return new Date(timestamp);
    }

    public static LocalDateTime timestampToLocalDateTime(long timestamp) {
        LocalDateTime localDateTime = Instant.ofEpochSecond(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
        return localDateTime;
    }

string -> 其他類型

    // =================================================================================
    public static Date stringToDate(String string, SimpleDateFormat simpleDateFormat) throws ParseException {
        return simpleDateFormat.parse(string);
    }

    public static Date stringToDate(String string) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.parse(string);
    }

    public static LocalDateTime stringToLocalDateTime(String string) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse(string, dateTimeFormatter);
        return localDateTime;
    }

    public static LocalDateTime stringToLocalDateTime(String string, DateTimeFormatter dateTimeFormatter) {
        LocalDateTime localDateTime = LocalDateTime.parse(string, dateTimeFormatter);
        return localDateTime;
    }

    public static long stringToTimestamp(String string) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse(string, dateTimeFormatter);
        long timestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).getEpochSecond();
        return timestamp;
    }

公衆號截圖




文章在公衆號「iceWang」第一手更新,有興趣的朋友可以關注公衆號,第一時間看到筆者分享的各項知識點,謝謝!筆芯!

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