栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

史上最全Java8日期时间工具类(分享)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

史上最全Java8日期时间工具类(分享)

这是我总结的Java8日期工具类,应该是比较全面的,满足日常开发绝大部分需求,分享给大家,有错误之处,还望大神指教。


public class LocalDateUtils {

  
  public static final String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

  
  public static final String DATE_PATTERN = "yyyy-MM-dd";

  
  public static final String TIME_PATTERN = "HH:mm:ss";

  
  public static final String UNSIGNED_DATETIME_PATTERN = "yyyyMMddHHmmss";

  
  public static final String UNSIGNED_DATE_PATTERN = "yyyyMMdd";

  
  public static final Integer SPRING = 1;

  
  public static final Integer SUMMER = 2;

  
  public static final Integer AUTUMN = 3;

  
  public static final Integer WINTER = 4;

  
  public static final String SUNDAY = "星期日";

  
  public static final String MonDAY = "星期一";

  
  public static final String TUESDAY = "星期二";

  
  public static final String WEDNESDAY = "星期三";

  
  public static final String THURSDAY = "星期四";

  
  public static final String FRIDAY = "星期五";

  
  public static final String SATURDAY = "星期六";

  
  private static final String YEAR = "year";

  
  private static final String MonTH = "month";

  
  private static final String WEEK = "week";

  
  private static final String DAY = "day";

  
  private static final String HOUR = "hour";

  
  private static final String MINUTE = "minute";

  
  private static final String SECOND = "second";

  
  public static String getLocalDateTimeStr() {
    return format(LocalDateTime.now(), DATETIME_PATTERN);
  }

  
  public static String getLocalDateStr() {
    return format(LocalDate.now(), DATE_PATTERN);
  }

  
  public static String getLocalTimeStr() {
    return format(LocalTime.now(), TIME_PATTERN);
  }

  
  public static String getDayOfWeekStr() {
    return format(LocalDate.now(), "E");
  }

  
  public static String getDayOfWeekStr(LocalDate localDate) {
    String[] weekOfDays = {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};
    int dayOfWeek = localDate.getDayOfWeek().getValue() - 1;
    return weekOfDays[dayOfWeek];
  }

  
  public static String format(TemporalAccessor temporal, String pattern) {
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
    return dateTimeFormatter.format(temporal);
  }

  
  public static LocalDateTime parseLocalDateTime(String localDateTimeStr, String pattern) {
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
    return LocalDateTime.parse(localDateTimeStr, dateTimeFormatter);
  }

  
  public static LocalDate parseLocalDate(String localDateStr, String pattern) {
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
    return LocalDate.parse(localDateStr, dateTimeFormatter);
  }

  
  public static LocalDateTime plus(LocalDateTime localDateTime, int num, ChronoUnit chronoUnit) {
    return localDateTime.plus(num, chronoUnit);
  }

  
  public static LocalDateTime minus(LocalDateTime localDateTime, int num, ChronoUnit chronoUnit) {
    return localDateTime.minus(num, chronoUnit);
  }

  
  public static long getChronoUnitBetween(LocalDateTime start, LocalDateTime end, ChronoUnit chronoUnit) {
    return Math.abs(start.until(end, chronoUnit));
  }

  
  public static long getChronoUnitBetween(LocalDate start, LocalDate end, ChronoUnit chronoUnit) {
    return Math.abs(start.until(end, chronoUnit));
  }

  
  public static String getFirstDayOfYearStr() {
    return getFirstDayOfYearStr(LocalDateTime.now());
  }

  
  public static String getLastDayOfYearStr() {
    return getLastDayOfYearStr(LocalDateTime.now());
  }

  
  public static String getFirstDayOfYearStr(LocalDateTime localDateTime) {
    return getFirstDayOfYearStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getLastDayOfYearStr(LocalDateTime localDateTime) {
    return getLastDayOfYearStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getFirstDayOfYearStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.withDayOfYear(1).withHour(0).withMinute(0).withSecond(0), pattern);
  }

  
  public static String getLastDayOfYearStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.with(TemporalAdjusters.lastDayOfYear()).withHour(23).withMinute(59).withSecond(59), pattern);
  }

  
  public static String getFirstDayOfMonthStr() {
    return getFirstDayOfMonthStr(LocalDateTime.now());
  }

  
  public static String getLastDayOfMonthStr() {
    return getLastDayOfMonthStr(LocalDateTime.now());
  }

  
  public static String getFirstDayOfMonthStr(LocalDateTime localDateTime) {
    return getFirstDayOfMonthStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getLastDayOfMonthStr(LocalDateTime localDateTime) {
    return getLastDayOfMonthStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getFirstDayOfMonthStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0), pattern);
  }

  
  public static String getLastDayOfMonthStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59), pattern);
  }

  
  public static String getFirstDayOfWeekStr() {
    return getFirstDayOfWeekStr(LocalDateTime.now());
  }

  
  public static String getLastDayOfWeekStr() {
    return getLastDayOfWeekStr(LocalDateTime.now());
  }

  
  public static String getFirstDayOfWeekStr(LocalDateTime localDateTime) {
    return getFirstDayOfWeekStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getLastDayOfWeekStr(LocalDateTime localDateTime) {
    return getLastDayOfWeekStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getFirstDayOfWeekStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.with(DayOfWeek.MONDAY).withHour(0).withMinute(0).withSecond(0), pattern);
  }

  
  public static String getLastDayOfWeekStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.with(DayOfWeek.SUNDAY).withHour(23).withMinute(59).withSecond(59), pattern);
  }

  
  public static String getStartTimeOfDayStr() {
    return getStartTimeOfDayStr(LocalDateTime.now());
  }

  
  public static String getEndTimeOfDayStr() {
    return getEndTimeOfDayStr(LocalDateTime.now());
  }

  
  public static String getStartTimeOfDayStr(LocalDateTime localDateTime) {
    return getStartTimeOfDayStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getEndTimeOfDayStr(LocalDateTime localDateTime) {
    return getEndTimeOfDayStr(localDateTime, DATETIME_PATTERN);
  }

  
  public static String getStartTimeOfDayStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.withHour(0).withMinute(0).withSecond(0), pattern);
  }

  
  public static String getEndTimeOfDayStr(LocalDateTime localDateTime, String pattern) {
    return format(localDateTime.withHour(23).withMinute(59).withSecond(59), pattern);
  }

  
  public static List listDateStrs(String startDate, String endDate, String period) {
    List result = new ArrayList<>();
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN);
    LocalDate end = LocalDate.parse(endDate, dateTimeFormatter);
    LocalDate start = LocalDate.parse(startDate, dateTimeFormatter);
    LocalDate tmp = start;
    switch (period) {
      case DAY:
 while (start.isBefore(end) || start.isEqual(end)) {
   result.add(start.toString());
   start = start.plusDays(1);
 }
 break;
      case WEEK:
 while (tmp.isBefore(end) || tmp.isEqual(end)) {
   if (tmp.plusDays(6).isAfter(end)) {
     result.add(tmp.toString() + "," + end);
   } else {
     result.add(tmp.toString() + "," + tmp.plusDays(6));
   }
   tmp = tmp.plusDays(7);
 }
 break;
      case MONTH:
 while (tmp.isBefore(end) || tmp.isEqual(end)) {
   LocalDate lastDayOfMonth = tmp.with(TemporalAdjusters.lastDayOfMonth());
   if (lastDayOfMonth.isAfter(end)) {
     result.add(tmp.toString() + "," + end);
   } else {
     result.add(tmp.toString() + "," + lastDayOfMonth);
   }
   tmp = lastDayOfMonth.plusDays(1);
 }
 break;
      case YEAR:
 while (tmp.isBefore(end) || tmp.isEqual(end)) {
   LocalDate lastDayOfYear = tmp.with(TemporalAdjusters.lastDayOfYear());
   if (lastDayOfYear.isAfter(end)) {
     result.add(tmp.toString() + "," + end);
   } else {
     result.add(tmp.toString() + "," + lastDayOfYear);
   }
   tmp = lastDayOfYear.plusDays(1);
 }
 break;
      default:
 break;
    }
    return result;
  }

  public static void main(String[] args) {
    System.out.println(getLocalDateTimeStr());
    System.out.println(getLocalDateStr());
    System.out.println(getLocalTimeStr());
    System.out.println(getDayOfWeekStr());
    System.out.println(getDayOfWeekStr(LocalDate.now()));

    System.out.println("========");
    System.out.println(format(LocalDate.now(), UNSIGNED_DATE_PATTERN));

    System.out.println("========");
    System.out.println(parseLocalDateTime("2020-12-13 11:14:12", DATETIME_PATTERN));
    System.out.println(parseLocalDate("2020-12-13", DATE_PATTERN));

    System.out.println("========");
    System.out.println(plus(LocalDateTime.now(), 3, ChronoUnit.HOURS));
    System.out.println(minus(LocalDateTime.now(), 4, ChronoUnit.DAYS));

    System.out.println("========");
    System.out.println(getChronoUnitBetween(LocalDateTime.now(), parseLocalDateTime("2020-12-12 12:03:12", DATETIME_PATTERN), ChronoUnit.MINUTES));
    System.out.println(getChronoUnitBetween(LocalDate.now(), parseLocalDate("2021-12-12", DATE_PATTERN), ChronoUnit.WEEKS));

    System.out.println("========");
    System.out.println(getFirstDayOfYearStr());
    System.out.println(getFirstDayOfYearStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getFirstDayOfYearStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println(getLastDayOfYearStr());
    System.out.println(getLastDayOfYearStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getLastDayOfYearStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println("========");
    System.out.println(getFirstDayOfMonthStr());
    System.out.println(getFirstDayOfMonthStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getFirstDayOfMonthStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println(getLastDayOfMonthStr());
    System.out.println(getLastDayOfMonthStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getLastDayOfMonthStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println("========");
    System.out.println(getFirstDayOfWeekStr());
    System.out.println(getFirstDayOfWeekStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getFirstDayOfWeekStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println(getLastDayOfWeekStr());
    System.out.println(getLastDayOfWeekStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getLastDayOfWeekStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println("========");
    System.out.println(getStartTimeOfDayStr());
    System.out.println(getStartTimeOfDayStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getStartTimeOfDayStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println(getEndTimeOfDayStr());
    System.out.println(getEndTimeOfDayStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN)));
    System.out.println(getEndTimeOfDayStr(parseLocalDateTime("2021-12-12 12:03:12", DATETIME_PATTERN), UNSIGNED_DATETIME_PATTERN));

    System.out.println("========");
    List dateStrs = listDateStrs("2019-01-30", "2020-12-13", YEAR);
    for (String dateStr : dateStrs) {
      System.out.println(dateStr);
    }

    System.out.println("========");
    List dateStrs1 = listDateStrs("2019-01-30", "2020-12-13", MONTH);
    for (String dateStr : dateStrs1) {
      System.out.println(dateStr);
    }

    System.out.println("========");
    List dateStrs2 = listDateStrs("2020-12-01", "2020-12-13", DAY);
    for (String dateStr : dateStrs2) {
      System.out.println(dateStr);
    }
  }
}

到此这篇关于史上最全Java8日期时间工具类(分享)的文章就介绍到这了,更多相关Java8 日期时间工具类内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/129870.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号