content: /*
   * Copyright 2019-2020 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package com.platform.utils;
  
  import java.time.*;
  import java.time.format.DateTimeFormatter;
  import java.util.Date;
  
  /**
   * @author AllDataDC
   * @date 2023-01-27 16:28
   * @apiNote: JDK 8  新日期类 格式化与字符串转换 工具类
   */
  public class DateUtil {
  
      public static final DateTimeFormatter DFY_MD_HMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
      public static final DateTimeFormatter DFY_MD = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  
      /**
       * LocalDateTime 转时间戳
       *
       * @param localDateTime /
       * @return /
       */
      public static Long getTimeStamp(LocalDateTime localDateTime) {
          return localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
      }
  
      /**
       * 时间戳转LocalDateTime
       *
       * @param timeStamp /
       * @return /
       */
      public static LocalDateTime fromTimeStamp(Long timeStamp) {
          return LocalDateTime.ofEpochSecond(timeStamp, 0, OffsetDateTime.now().getOffset());
      }
  
      /**
       * LocalDateTime 转 Date
       * Jdk8 后 不推荐使用 {@link Date} Date
       *
       * @param localDateTime /
       * @return /
       */
      public static Date toDate(LocalDateTime localDateTime) {
          return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
      }
  
      /**
       * LocalDate 转 Date
       * Jdk8 后 不推荐使用 {@link Date} Date
       *
       * @param localDate /
       * @return /
       */
      public static Date toDate(LocalDate localDate) {
          return toDate(localDate.atTime(LocalTime.now(ZoneId.systemDefault())));
      }
  
  
      /**
       * Date转 LocalDateTime
       * Jdk8 后 不推荐使用 {@link Date} Date
       *
       * @param date /
       * @return /
       */
      public static LocalDateTime toLocalDateTime(Date date) {
          return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
      }
  
      /**
       * 日期 格式化
       *
       * @param localDateTime /
       * @param patten /
       * @return /
       */
      public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) {
          DateTimeFormatter df = DateTimeFormatter.ofPattern(patten);
          return df.format(localDateTime);
      }
  
      /**
       * 日期 格式化
       *
       * @param localDateTime /
       * @param df /
       * @return /
       */
      public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) {
          return df.format(localDateTime);
      }
  
      /**
       * 日期格式化 yyyy-MM-dd HH:mm:ss
       *
       * @param localDateTime /
       * @return /
       */
      public static String localDateTimeFormatyMdHms(LocalDateTime localDateTime) {
          return DFY_MD_HMS.format(localDateTime);
      }
  
      /**
       * 日期格式化 yyyy-MM-dd
       *
       * @param localDateTime /
       * @return /
       */
      public String localDateTimeFormatyMd(LocalDateTime localDateTime) {
          return DFY_MD.format(localDateTime);
      }
  
      /**
       * 字符串转 LocalDateTime ，字符串格式 yyyy-MM-dd
       *
       * @param localDateTime /
       * @return /
       */
      public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, String pattern) {
          DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
          return LocalDateTime.from(dateTimeFormatter.parse(localDateTime));
      }
  
      /**
       * 字符串转 LocalDateTime ，字符串格式 yyyy-MM-dd
       *
       * @param localDateTime /
       * @return /
       */
      public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, DateTimeFormatter dateTimeFormatter) {
          return LocalDateTime.from(dateTimeFormatter.parse(localDateTime));
      }
  
      /**
       * 字符串转 LocalDateTime ，字符串格式 yyyy-MM-dd HH:mm:ss
       *
       * @param localDateTime /
       * @return /
       */
      public static LocalDateTime parseLocalDateTimeFormatyMdHms(String localDateTime) {
          return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime));
      }
  }
  