時間工具類
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss"; public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** * 格式化后的日期字符串,默認使用 yyyy-MM-dd HH:mm:ss * @param localDateTime * @return formatDateToString */ public static String formatDateToString(LocalDateTime localDateTime){ return localDateTime.format(DateTimeFormatter.ofPattern(DEFAULT_DATETIME_FORMAT)); } /** * 根據給定的格式把時間轉換為字符串 * @param localDateTime 要格式化的日期 * @param format 轉換格式 * @return formatDateToString */ public static String formatDateToString(LocalDateTime localDateTime , String format){ if (null != localDateTime){ return localDateTime.format(DateTimeFormatter.ofPattern(format)); } else { return null; } } /** * 字符轉換為時間,默認使用yyyy-MM-dd HH:mm:ss格式 * @param date * @return LocalDateTime */ public static LocalDateTime formatStringToDate(String date){ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DEFAULT_DATETIME_FORMAT); return LocalDateTime.parse(date,dateTimeFormatter); } /** * 字符轉換為時間,默認使用yyyy-MM-dd HH:mm:ss格式 * @param data 日期字符串 * @param format 轉換格式 * @return LocalDateTime */ public static LocalDateTime formatStringToDate(String data,String format){ if (null != data && ! data.equals("")){ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format); return LocalDateTime.parse(data,dateTimeFormatter); } else { return null; } } /** * 將LocalDateTime轉為long類型的timestamp * @param localDateTime * @return long */ public static long getTimestampOfDateTime(LocalDateTime localDateTime){ ZoneId zoneId = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zoneId).toInstant(); return instant.toEpochMilli(); } /** * 將long類型的timestamp轉為LocalDateTime * @param timestamp * @return LocalDateTime */ public static LocalDateTime getDateTimeOfTimestamp(long timestamp){ Instant instant = Instant.ofEpochMilli(timestamp); ZoneId zoneId = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant,zoneId); } /** * 判斷一個日期是否在指定日期之后 * @param data 要比較的日期 * @param afterData 指定的日期 * @param format 格式 * @return boolean */ public static boolean isAfter(String data , String afterData , String format){ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format); LocalDateTime datas = LocalDateTime.parse(data,dateTimeFormatter); LocalDateTime afterDa = LocalDateTime.parse(afterData , dateTimeFormatter); return datas.isAfter(afterDa); } /** * 判斷一個日期是否在指定日期之前 * @param data 要比較的日期 * @param before 指定的日期 * @param format 格式 * @return boolean */ public static boolean isBefore(String data,String before ,String format){ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format); LocalDateTime datas = LocalDateTime.parse(data,dateTimeFormatter); LocalDateTime afterDa = LocalDateTime.parse(before , dateTimeFormatter); return datas.isBefore(afterDa); } /** * 判斷是否為閏年 * @param data 日期 格式:yyyy-MM-dd * @return boolean */ public static boolean isLeapYear(String data){ LocalDate yeat = LocalDate.parse(data); return yeat.isLeapYear(); } /** * 判斷是否為閏年 * @param localDate 日期 格式:yyyy-MM-dd * @return boolean */ public static boolean isLeapYear(LocalDate localDate){ return localDate.isLeapYear(); } /** * 當前時間加減年 * @param years 年 * @return */ public static LocalDateTime plusYears(int years){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusYears(years); } /** * 當前時間加減月 * @param months 月份 * @return */ public static LocalDateTime plusMonths(int months){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusMonths(months); } /** * 當前時間加減日 * @param days 日 * @return */ public static LocalDateTime plusDays(int days){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusDays(days); } /** * 當前時間加減星期 * @param weeks 星期 * @return */ public static LocalDateTime plusWeeks(int weeks){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusWeeks(weeks); } /** * 當前時間加上幾個小時,傳入負數減去對應的時間 * @param hours 時間:單位小時 * @return LocalDateTime */ public static LocalDateTime plusHours(int hours){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusHours(hours); } /** * 當前時間加上幾分鍾,傳入負數減去對應的時間 * @param minutes 時間:單位分鍾 * @return LocalDateTime */ public static LocalDateTime plusMinutes(int minutes){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusMinutes(minutes); } /** * 當前時間加上幾秒鍾,傳入負數減去對應的時間 * @param seconds 時間:單位秒 * @return LocalDateTime */ public static LocalDateTime plusSeconds(int seconds){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.plusSeconds(seconds); } /** * 修改當前時間的小時 * @param hour 時間:單位小時 * @return LocalDateTime */ public static LocalDateTime withHour(int hour){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.withHour(hour); } /** * 修改當前時間的分鍾 * @param minute 時間:單位分鍾 * @return LocalDateTime */ public static LocalDateTime withMinute(int minute){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.withMinute(minute); } /** * 修改當前時間的秒 * @param second 時間:單位秒 * @return LocalDateTime */ public static LocalDateTime withSecond(int second){ LocalDateTime localDateTime = LocalDateTime.now(); return localDateTime.withSecond(second); } /** * 給指定的時間加年 * @param data 指定時間 * @param years 要加上的年份負數為減去 * @return LocalDateTime */ public static LocalDateTime addYears(String data , int years){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusYears(years); } /** * 給指定的時間加月 * @param data 指定時間 * @param months 要加上的月負數為減去 * @return LocalDateTime */ public static LocalDateTime addMonths(String data , int months){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusMonths(months); } /** * 給指定的時間加日 * @param data 指定時間 * @param days 要加上的日負數為減去 * @return LocalDateTime */ public static LocalDateTime addDays(String data , int days){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusDays(days); } /** * 給指定的時間加星期 * @param data 指定時間 * @param weeks 要加上的星期負數為減去 * @return LocalDateTime */ public static LocalDateTime addWeeks(String data, int weeks){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusWeeks(weeks); } /** * 給指定時間加小時 * @param data 指定時間 * @param hour 要加上的小時負數為減去 * @return LocalDateTime */ public static LocalDateTime addHours(String data , int hour){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusHours(hour); } /** * 給指定時間加分鍾 * @param data 指定時間 * @param minutes 要加上的分鍾負數為減去 * @return LocalDateTime */ public static LocalDateTime addMinutes(String data , int minutes){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusMinutes(minutes); } /** * 給指定時間加秒 * @param data 指定時間 * @param seconds 要加上的秒負數為減去 * @return LocalDateTime */ public static LocalDateTime addSeconds(String data , int seconds){ LocalDateTime localDateTime = formatStringToDate(data); return localDateTime.plusSeconds(seconds); } /** * 計算兩個時間相差多少年,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusYears(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.YEARS.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少月,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusMonths(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.MONTHS.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少天,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusDays(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.DAYS.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少星期,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusWeeks(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.WEEKS.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少小時,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusHours(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.HOURS.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少分鍾,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusMinutes(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.MINUTES.between(localDateTime,localDateTime2); } /** * 計算兩個時間相差多少秒,結果為負數說明前面的時間比后面的時間大 * @param time1 時間一 * @param time2 時間二 * @return long */ public static long minusSeconds(String time1 ,String time2){ LocalDateTime localDateTime = formatStringToDate(time1); LocalDateTime localDateTime2 = formatStringToDate(time2); return ChronoUnit.MINUTES.between(localDateTime,localDateTime2); } /** * 獲取傳入時間的年份 * @param localDateTime 時間 * @return */ public static int getYear(LocalDateTime localDateTime){ return localDateTime.getYear(); } /** * 獲取傳入時間的月份 * @param localDateTime 時間 * @return */ public static int getMonth(LocalDateTime localDateTime){ return MyMonth.getMonth(localDateTime.getMonth().toString()); } /** * 獲取傳入時間的日 * @param localDateTime 時間 * @return */ public static int getDay(LocalDateTime localDateTime){ return localDateTime.getDayOfMonth(); } /** * 獲取傳入時間是星期幾 * @param localDateTime 時間 * @return Integer */ public static Integer getWeek(LocalDateTime localDateTime){ return MyDayOfWeek.getDayWeek(localDateTime.getDayOfWeek().toString()); } /** * 獲取傳入時間是一年中的第幾天 * @param localDateTime 時間 * @return Integer */ public static Integer getDayOfYear(LocalDateTime localDateTime){ return localDateTime.getDayOfYear(); } /** * 獲取傳入時間的時 * @param localDateTime 時間 * @return */ public static int getHour(LocalDateTime localDateTime){ return localDateTime.getHour(); } /** * 獲取傳入時間的分 * @param localDateTime 時間 * @return */ public static int getMinutes(LocalDateTime localDateTime){ return localDateTime.getMinute(); } /** * 獲取傳入時間的秒 * @param localDateTime 時間 * @return */ public static int getSeconds(LocalDateTime localDateTime){ return localDateTime.getSecond(); }
另外加上兩個附帶使用到的工具類,在獲取月份和星期的時候使用
package com.xy.studyboot.util; /** * WJY */ public enum MyMonth { JANUARY(1,"JANUARY"), FEBRUARY(2,"FEBRUARY"), MARCH(3,"MARCH"), APRIL(4,"APRIL"), MAY(5,"MAY"), JUNE(6,"JUNE"), JULY(7,"JULY"), AUGUST(8,"AUGUST"), SEPTEMBER(9,"SEPTEMBER"), OCTOBER(10,"OCTOBER"), NOVEMBER(11,"NOVEMBER"), DECEMBER(12,"DECEMBER"); private int month; private String value; private MyMonth(int month,String value){ this.month = month; this.value = value; } public static Integer getMonth(String value){ for (MyMonth myMonth: MyMonth.values()){ if (myMonth.getValue().equals(value)){ return myMonth.getMonth(); } } return null; } public int getMonth() { return month; } public String getValue() { return value; } }
package com.xy.studyboot.util; /** * WJY */ public enum MyDayOfWeek { MONDAY(1,"MONDAY"), TUESDAY(2,"TUESDAY"), WEDNESDAY(3,"WEDNESDAY"), THURSDAY(4,"THURSDAY"), FRIDAY(5,"FRIDAY"), SATURDAY(6,"SATURDAY"), SUNDAY(7,"SUNDAY"); private int day; private String value; private MyDayOfWeek(int day , String value){ this.day = day; this.value = value; } public static Integer getDayWeek(String value){ for (MyDayOfWeek dayOfWeek : MyDayOfWeek.values()){ if (dayOfWeek.getValue().equals(value)){ return dayOfWeek.getDay(); } } return null; } public int getDay() { return day; } public String getValue() { return value; } }