如何網(wǎng)上建設(shè)網(wǎng)站優(yōu)化設(shè)計全部答案
# 1024程序員節(jié) | 征文 #
目錄
簡介
Date工具類單元測試
Date工具類
簡介
????????本文章是個人總結(jié)實際工作中常用到的Date工具類,主要包含Java-jdk8以下版本的Date相關(guān)使用方法,可以方便的在工作中靈活的應用,在個人工作期間頻繁使用這些時間的格式轉(zhuǎn)換以及時間的運算(加、減),時間的比較,時間的范圍獲取等等,在這里把時間相關(guān)的具體方法展現(xiàn)出來供大家使用參考,方便大家在工作中更加提升效率!
Date工具類方法
-
Date轉(zhuǎn)String方法
-
Date轉(zhuǎn) 格式:DATE_YYYY_PATTERN = "yyyy";
-
Date轉(zhuǎn) 格式:DATE_YYYY_PATTERN2 = "yyyy年";
-
Date轉(zhuǎn) 格式:DATE_MM_PATTERN = "MM";
-
Date轉(zhuǎn) 格式:DATE_MM_PATTERN2 = "MM月";
-
Date轉(zhuǎn) 格式:DATE_DD_PATTERN = "dd";
-
Date轉(zhuǎn) 格式:DATE_DD_PATTERN2 = "dd日";
-
Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN = "yyyy-MM";
-
Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN2 = "yyyy/MM";
-
Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN3 = "yyyyMM";
-
Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN4 = "yyyy.MM";
-
Date轉(zhuǎn) 格式: DATE_YYYY_MM_PATTERN5 = "yyyy年MM";
-
Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN = "MM-dd";
-
Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN2 = "MM/dd";
-
Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN3 = "MMdd";
-
Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN4 = "MM.dd";
-
Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN5 = "MM年dd";
-
Date轉(zhuǎn) 格式: DATE_PATTERN = "yyyy-MM-dd";
-
Date轉(zhuǎn) 格式: DATE_PATTERN2 = "yyyy/MM/dd";
-
Date轉(zhuǎn) 格式: DATE_PATTERN3 = "yyyyMMdd";
-
Date轉(zhuǎn) 格式: DATE_PATTERN4 = "yyyy.MM.dd";
-
Date轉(zhuǎn) 格式: DATE_PATTERN5 = "yyyy年MM月dd日";
-
-
String類型日期轉(zhuǎn)Date方法
-
String類型日期轉(zhuǎn)Date方法
-
String類型日期轉(zhuǎn)Date方法+自定義規(guī)則
-
-
DateTime轉(zhuǎn)String方法
-
Date轉(zhuǎn) 格式: TIME_HH_PATTERN = "HH";
-
Date轉(zhuǎn) 格式: TIME_hh_PATTERN = "hh";
-
Date轉(zhuǎn) 格式:TIME_HH_PATTERN2 = "HH小時";
-
Date轉(zhuǎn) 格式: TIME_hh_PATTERN2 = "hh小時"; (12小時制)
-
Date轉(zhuǎn) 格式:TIME_MM_PATTERN = "mm";
-
Date轉(zhuǎn) 格式:TIME_MM_PATTERN2 = "mm分鐘";
-
Date轉(zhuǎn) 格式:TIME_SS_PATTERN = "ss";
-
Date轉(zhuǎn) 格式:TIME_SS_PATTERN2 = "ss秒";
-
Date轉(zhuǎn) 格式:TIME_HH_MM_PATTERN = "HH:mm";
-
Date轉(zhuǎn) 格式:TIME_hh_MM_PATTERN = "hh:mm";
-
Date轉(zhuǎn) 格式:TIME_MM_SS_PATTERN = "mm:ss";
-
Date轉(zhuǎn) 格式:TIME_HH_MM_SS_PATTERN = "HH:mm:ss"; (24小時制)
-
Date轉(zhuǎn) 格式:TIME_hh_MM_SS_PATTERN = "hh:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN2 = "yyyyMMddHHmmss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN3 = "yyyy/MM/dd HH:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN4 = "yyyy.MM.dd HH:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN6 = "yyyy年MM月dd日 HH時mm分ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN7 = "yyyy年MM月dd日 HH小時mm分鐘ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN8 = "yyyy年MM月dd日HH小時mm分鐘ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN = "yyyy-MM-dd hh:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN2 = "yyyyMMddhhmmss";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN3 = "yyyy/MM/dd hh:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN4 = "yyyy.MM.dd hh:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN6 = "yyyy年MM月dd日 hh時mm分ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN7 = "yyyy年MM月dd日 hh小時mm分鐘ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_PATTERN8 = "yyyy年MM月dd日HH小時mm分鐘ss秒";
-
Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN2 = "yyyyMMddHHmmssSSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN3 = "yyyy/MM/dd HH:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN4 = "yyyy.MM.dd HH:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN = "yyyy-MM-dd hh:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN2 = "yyyyMMddhhmmssSSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN3 = "yyyy/MM/dd hh:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN4 = "yyyy.MM.dd hh:mm:ss.SSS";
-
Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss.SSS";
-
Date轉(zhuǎn)字符串公共格式化方法
-
-
Date獲取時間戳方法
-
獲取當前時間的時間戳
-
獲取指定時間的時間戳
-
-
String類型日期獲取時間戳方法
-
獲取指定時間的時間戳 yyyy-MM-dd
-
獲取指定時間的時間戳 yyyy-MM-dd hh:mm:ss
-
-
Date日期對【秒】【分鐘】【小時】【天】【周】【月】【年】進行加(+)/減(-)方法
-
對日期的【秒】進行加/減
-
對日期的【分鐘】進行加/減
-
對日期的【小時】進行加/減
-
對日期的【天】進行加/減
-
對日期的【周】進行加/減
-
對日期的【月】進行加/減
-
對日期的【年】進行加/減
-
獲取日期時間對象
-
-
Date日期比較方法
-
比較兩個時間是否相等,只比較年
-
比較兩個時間是否相等,只比較年 (Java8+)
-
比較兩個時間是否相等,只比較年月
-
比較兩個時間是否相等,只比較年月 (Java8+)
-
比較兩個時間是否相等,只比較年月日
-
比較兩個時間是否相等,只比較年月日 (Java8+)
-
比較兩個時間是否相等,只比較年月日時分秒
-
比較兩個時間是否相等,只比較年月日時分秒 (Java8+)
-
比較兩個時間大小,只比較年
-
比較兩個時間大小,只比較年 (Java8+)
-
比較兩個時間大小,只比較年月
-
比較兩個時間大小,只比較年月 (Java8+)
-
比較兩個時間大小,只比較年月日
-
比較兩個時間大小,只比較年月日 (Java8+)
-
比較兩個時間大小,只比較年月日時分秒
-
比較兩個時間大小,只比較年月日時分秒 (Java8+)
-
檢查兩個時間之間的差異是否大于等于30分鐘
-
檢查兩個時間之間的差異是否大于等于多少分鐘
-
-
檢查兩個時間之間的差異是否大于等于多少(自定義)分鐘
-
檢查兩個時間之間的差異是否大于等于30分鐘
-
-
Date日期獲取方法
-
根據(jù)年份獲取所有月份
-
根據(jù)年份+月份獲取月份的所有周
-
根據(jù)年份+月份獲取月份的所有天
-
根據(jù)年份+月份獲取月份的所有天
-
根據(jù)年份+月份獲取指定天的所有小時
-
Date工具類單元測試源碼
單元測試代碼:
public static void main(String[] args) {Date date = new Date();System.out.println("===========================****************Date轉(zhuǎn)String方法****************===========================");System.out.println("formatDateYYYY(date) = " + formatDateYYYY(date));System.out.println("formatDateYYYY2(date) = " + formatDateYYYY2(date));System.out.println("formatDateMM(date) = " + formatDateMM(date));System.out.println("formatDateMM2(date) = " + formatDateMM2(date));System.out.println("formatDateDD(date) = " + formatDateDD(date));System.out.println("formatDateDD2(date) = " + formatDateDD2(date));System.out.println("formatDateYYYYMM(date) = " + formatDateYYYYMM(date));System.out.println("formatDateYYYYMM2(date) = " + formatDateYYYYMM2(date));System.out.println("formatDateYYYYMM3(date) = " + formatDateYYYYMM3(date));System.out.println("formatDateYYYYMM4(date) = " + formatDateYYYYMM4(date));System.out.println("formatDateYYYYMM5(date) = " + formatDateYYYYMM5(date));System.out.println("formatDateMMDD(date) = " + formatDateMMDD(date));System.out.println("formatDateMMDD2(date) = " + formatDateMMDD2(date));System.out.println("formatDateMMDD3(date) = " + formatDateMMDD3(date));System.out.println("formatDateMMDD4(date) = " + formatDateMMDD4(date));System.out.println("formatDateMMDD5(date) = " + formatDateMMDD5(date));System.out.println("formatDate(date) = " + formatDate(date));System.out.println("formatDate2(date) = " + formatDate2(date));System.out.println("formatDate3(date) = " + formatDate3(date));System.out.println("formatDate4(date) = " + formatDate4(date));System.out.println("formatDate5(date) = " + formatDate5(date));System.out.println("===========================****************DateTime轉(zhuǎn)String方法****************===========================");System.out.println("formatTimeHH(date) = " + formatTimeHH(date));System.out.println("formatTimeHh(date) = " + formatTimeHh(date));System.out.println("formatTimeHH2(date) = " + formatTimeHH2(date));System.out.println("formatTimeHh2(date) = " + formatTimeHh2(date));System.out.println("formatTimeMM(date) = " + formatTimeMM(date));System.out.println("formatTimeMM2(date) = " + formatTimeMM2(date));System.out.println("formatTimeSS(date) = " + formatTimeSS(date));System.out.println("formatTimeSS2(date) = " + formatTimeSS2(date));System.out.println("formatTimeHHMM(date) = " + formatTimeHHMM(date));System.out.println("formatTimeHhMM(date) = " + formatTimeHhMM(date));System.out.println("formatTimeMMSS(date) = " + formatTimeMMSS(date));System.out.println("formatTimeHHMMSS(date) = " + formatTimeHHMMSS(date));System.out.println("formatTimeHhMMSS(date) = " + formatTimeHhMMSS(date));System.out.println("formatDateTime(date) = " + formatDateTime(date));System.out.println("formatDateTime2(date) = " + formatDateTime2(date));System.out.println("formatDateTime3(date) = " + formatDateTime3(date));System.out.println("formatDateTime4(date) = " + formatDateTime4(date));System.out.println("formatDateTime5(date) = " + formatDateTime5(date));System.out.println("formatDateTime6(date) = " + formatDateTime6(date));System.out.println("formatDateTime7(date) = " + formatDateTime7(date));System.out.println("formatDateTime8(date) = " + formatDateTime8(date));System.out.println("formatDateTimeH(date) = " + formatDateTimeH(date));System.out.println("formatDateTimeH2(date) = " + formatDateTimeH2(date));System.out.println("formatDateTimeH3(date) = " + formatDateTimeH3(date));System.out.println("formatDateTimeH4(date) = " + formatDateTimeH4(date));System.out.println("formatDateTimeH5(date) = " + formatDateTimeH5(date));System.out.println("formatDateTimeH6(date) = " + formatDateTimeH6(date));System.out.println("formatDateTimeH7(date) = " + formatDateTimeH7(date));System.out.println("formatDateTimeH8(date) = " + formatDateTimeH8(date));System.out.println("formatDateTimeSSS(date) = " + formatDateTimeSSS(date));System.out.println("formatDateTimeSSS2(date) = " + formatDateTimeSSS2(date));System.out.println("formatDateTimeSSS3(date) = " + formatDateTimeSSS3(date));System.out.println("formatDateTimeSSS4(date) = " + formatDateTimeSSS4(date));System.out.println("formatDateTimeSSS5(date) = " + formatDateTimeSSS5(date));System.out.println("formatDateTimeHSSS(date) = " + formatDateTimeHSSS(date));System.out.println("formatDateTimeHSSS2(date) = " + formatDateTimeHSSS2(date));System.out.println("formatDateTimeHSSS3(date) = " + formatDateTimeHSSS3(date));System.out.println("formatDateTimeHSSS4(date) = " + formatDateTimeHSSS4(date));System.out.println("formatDateTimeHSSS5(date) = " + formatDateTimeHSSS5(date));System.out.println("===========================****************Date獲取時間戳方法****************===========================");System.out.println("getNowTimestamp() = " + getNowTimestamp());System.out.println("getDateTimestamp(date) = " + getDateTimestamp(date));System.out.println("===========================****************String類型日期獲取時間戳方法****************===========================");System.out.println("getDateTimestampByYYYYMMDD(\"2024-09-09\") = " + getDateTimestampByYYYYMMDD("2024-09-09"));System.out.println("getDateTimestampByYYYYMMDDHHMMSS(\"2024-09-09 14:50:00\") = " + getDateTimestampByYYYYMMDDHHMMSS("2024-09-09 14:50:00"));System.out.println("=============******Date日期對【秒】【分鐘】【小時】【天】【周】【月】【年】進行加(+)/減(-)方法*********==============");System.out.println("addDateSeconds(date, 0) = " + addDateSeconds(date, 0));System.out.println("addDateSeconds(date, 1) = " + addDateSeconds(date, 1));System.out.println("addDateSeconds(date, -2) = " + addDateSeconds(date, -2));System.out.println("addDateMinutes(date,0) = " + addDateMinutes(date, 0));System.out.println("addDateMinutes(date,1) = " + addDateMinutes(date, 1));System.out.println("addDateMinutes(date,-2) = " + addDateMinutes(date, -2));System.out.println("addDateHours(date, 0) = " + addDateHours(date, 0));System.out.println("addDateHours(date, 1) = " + addDateHours(date, 1));System.out.println("addDateHours(date, -2) = " + addDateHours(date, -2));System.out.println("addDateDays(date,0) = " + addDateDays(date, 0));System.out.println("addDateDays(date,1) = " + addDateDays(date, 1));System.out.println("addDateDays(date, -2) = " + addDateDays(date, -2));System.out.println("addDateWeeks(date,0) = " + addDateWeeks(date, 0));System.out.println("addDateWeeks(date,1) = " + addDateWeeks(date, 1));System.out.println("addDateMonths(date, 1) = " + addDateMonths(date, 1));System.out.println("addDateMonths(date, -2) = " + addDateMonths(date, -2));System.out.println("addDateYears(date, 0) = " + addDateYears(date, 0));System.out.println("addDateYears(date, 1) = " + addDateYears(date, 1));System.out.println("addDateYears(date, -2) = " + addDateYears(date, -2));System.out.println("=============******Date日期比較方法*********==============");Date date1 = new Date();Date date2 = new Date();System.out.println("compareEqualDateYYYY(date,date1) = " + compareEqualDateYYYY(date, date1));System.out.println("compareEqualDateYYYY(date,date2) = " + compareEqualDateYYYY(date, date2));System.out.println("compareEqualDateYYYY(date1,date2) = " + compareEqualDateYYYY(date1, date2));System.out.println("compareEqualDateYYYYJava8(date,date1) = " + compareEqualDateYYYYJava8(date, date1));System.out.println("compareEqualDateYYYYJava8(date,date2) = " + compareEqualDateYYYYJava8(date, date2));System.out.println("compareEqualDateYYYYJava8(date1,date2) = " + compareEqualDateYYYYJava8(date1, date2));System.out.println("compareEqualDateYYYYMM(date,date1) = " + compareEqualDateYYYYMM(date, date1));System.out.println("compareEqualDateYYYYMM(date,date2) = " + compareEqualDateYYYYMM(date, date2));System.out.println("compareEqualDateYYYYMM(date1,date2) = " + compareEqualDateYYYYMM(date1, date2));System.out.println("compareEqualDateYYYYMMJava8(date,date1) = " + compareEqualDateYYYYMMJava8(date, date1));System.out.println("compareEqualDateYYYYMMJava8(date,date2) = " + compareEqualDateYYYYMMJava8(date, date2));System.out.println("compareEqualDateYYYYMMJava8(date1,date2) = " + compareEqualDateYYYYMMJava8(date1, date2));System.out.println("compareEqualDateYYYYMMDD(date,date1) = " + compareEqualDateYYYYMMDD(date, date1));System.out.println("compareEqualDateYYYYMMDD(date,date2) = " + compareEqualDateYYYYMMDD(date, date2));System.out.println("compareEqualDateYYYYMMDD(date1,date2) = " + compareEqualDateYYYYMMDD(date1, date2));System.out.println("compareEqualDateYYYYMMDDJava8(date,date1) = " + compareEqualDateYYYYMMDDJava8(date, date1));System.out.println("compareEqualDateYYYYMMDDJava8(date,date2) = " + compareEqualDateYYYYMMDDJava8(date, date2));System.out.println("compareEqualDateYYYYMMDDJava8(date1,date2) = " + compareEqualDateYYYYMMDDJava8(date1, date2));System.out.println("compareEqualDateYYYYMMDDHHMMSS(date,date1) = " + compareEqualDateYYYYMMDDHHMMSS(date, date1));System.out.println("compareEqualDateYYYYMMDDHHMMSS(date,date2) = " + compareEqualDateYYYYMMDDHHMMSS(date, date2));System.out.println("compareEqualDateYYYYMMDDHHMMSS(date1,date2) = " + compareEqualDateYYYYMMDDHHMMSS(date1, date2));System.out.println("compareEqualDateYYYYMMDDHHMMSSJava8(date,date1) = " + compareEqualDateYYYYMMDDHHMMSSJava8(date, date1));System.out.println("compareEqualDateYYYYMMDDHHMMSSJava8(date,date2) = " + compareEqualDateYYYYMMDDHHMMSSJava8(date, date2));System.out.println("compareEqualDateYYYYMMDDHHMMSSJava8(date1,date2) = " + compareEqualDateYYYYMMDDHHMMSSJava8(date1, date2));// ==========檢查兩個時間之間的差異是否大于等于多少分鐘==================// 創(chuàng)建兩個時間示例Calendar calendar1 = Calendar.getInstance();Calendar calendar2 = Calendar.getInstance();// 設(shè)置時間(這里僅為示例,您可以根據(jù)需要設(shè)置實際時間)calendar1.set(2023, Calendar.OCTOBER, 1, 10, 0, 0); // 2023-10-01 10:00:00calendar2.set(2023, Calendar.OCTOBER, 1, 10, 31, 0); // 2023-10-01 10:31:00// 獲取Date對象Date date3 = calendar1.getTime();Date date4 = calendar2.getTime();// 檢查時間差是否大于等于30分鐘if (isTimeDifferenceMoreThanOrEqual30Minutes(date3, date4)) {System.out.println("時間差大于等于30分鐘");} else {System.out.println("時間差小于30分鐘");}// ====根據(jù)年份獲取所有月份====================List<String> traverseMonthsOfYear = traverseMonthsOfYear(2024);System.out.println("traverseMonthsOfYear = ");traverseMonthsOfYear.forEach(System.out::println);}
Date工具類源碼
import com.google.common.collect.Lists;
import com.ruoyi.common.core.utils.StringUtils;
import org.joda.time.DateTime;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.List;public class DateUtils {/*** y:年份* M:月份* d:日期* H:小時(24小時制)* h:小時(12小時制)* m:分鐘* s:秒鐘* S:毫秒*/public final static String DATE_YYYY_PATTERN = "yyyy";public final static String DATE_YYYY_PATTERN2 = "yyyy年";public final static String DATE_MM_PATTERN = "MM";public final static String DATE_MM_PATTERN2 = "MM月";public final static String DATE_DD_PATTERN = "dd";public final static String DATE_DD_PATTERN2 = "dd日";public final static String TIME_HH_PATTERN = "HH";public final static String TIME_HH_PATTERN2 = "HH小時";public final static String TIME_hh_PATTERN = "hh小時";public final static String TIME_hh_PATTERN2 = "hh小時";public final static String TIME_MM_PATTERN = "mm";public final static String TIME_MM_PATTERN2 = "mm分鐘";public final static String TIME_SS_PATTERN = "ss";public final static String TIME_SS_PATTERN2 = "ss秒";public final static String DATE_YYYY_MM_PATTERN = "yyyy-MM";public final static String DATE_YYYY_MM_PATTERN2 = "yyyy/MM";public final static String DATE_YYYY_MM_PATTERN3 = "yyyyMM";public final static String DATE_YYYY_MM_PATTERN4 = "yyyy.MM";public final static String DATE_YYYY_MM_PATTERN5 = "yyyy年MM月";public final static String DATE_MM_DD_PATTERN = "MM-dd";public final static String DATE_MM_DD_PATTERN2 = "MM/dd";public final static String DATE_MM_DD_PATTERN3 = "MMdd";public final static String DATE_MM_DD_PATTERN4 = "MM.dd";public final static String DATE_MM_DD_PATTERN5 = "MM月dd日";public final static String TIME_HH_MM_PATTERN = "HH:mm";public final static String TIME_hh_MM_PATTERN = "hh:mm";public final static String TIME_MM_SS_PATTERN = "mm:ss";public final static String TIME_HH_MM_SS_PATTERN = "HH:mm:ss";public final static String TIME_hh_MM_SS_PATTERN = "hh:mm:ss";public final static String DATE_PATTERN = "yyyy-MM-dd";public final static String DATE_PATTERN2 = "yyyy/MM/dd";public final static String DATE_PATTERN3 = "yyyyMMdd";public final static String DATE_PATTERN4 = "yyyy.MM.dd";public final static String DATE_PATTERN5 = "yyyy年MM月dd日";public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";public final static String DATE_TIME_PATTERN2 = "yyyyMMddHHmmss";public final static String DATE_TIME_PATTERN3 = "yyyy/MM/dd HH:mm:ss";public final static String DATE_TIME_PATTERN4 = "yyyy.MM.dd HH:mm:ss";public final static String DATE_TIME_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss";public final static String DATE_TIME_PATTERN6 = "yyyy年MM月dd日 HH時mm分ss秒";public final static String DATE_TIME_PATTERN7 = "yyyy年MM月dd日 HH小時mm分鐘ss秒";public final static String DATE_TIME_PATTERN8 = "yyyy年MM月dd日HH小時mm分鐘ss秒";public final static String DATE_TIME_h_PATTERN = "yyyy-MM-dd hh:mm:ss";public final static String DATE_TIME_h_PATTERN2 = "yyyyMMddhhmmss";public final static String DATE_TIME_h_PATTERN3 = "yyyy/MM/dd hh:mm:ss";public final static String DATE_TIME_h_PATTERN4 = "yyyy.MM.dd hh:mm:ss";public final static String DATE_TIME_h_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss";public final static String DATE_TIME_h_PATTERN6 = "yyyy年MM月dd日 hh時mm分ss秒";public final static String DATE_TIME_h_PATTERN7 = "yyyy年MM月dd日 hh小時mm分鐘ss秒";public final static String DATE_TIME_h_PATTERN8 = "yyyy年MM月dd日hh小時mm分鐘ss秒";public final static String DATE_TIME_SSS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";public final static String DATE_TIME_SSS_PATTERN2 = "yyyyMMddHHmmssSSS";public final static String DATE_TIME_SSS_PATTERN3 = "yyyy/MM/dd HH:mm:ss.SSS";public final static String DATE_TIME_SSS_PATTERN4 = "yyyy.MM.dd HH:mm:ss.SSS";public final static String DATE_TIME_SSS_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss.SSS";public final static String DATE_TIME_h_SSS_PATTERN = "yyyy-MM-dd hh:mm:ss.SSS";public final static String DATE_TIME_h_SSS_PATTERN2 = "yyyyMMddhhmmssSSS";public final static String DATE_TIME_h_SSS_PATTERN3 = "yyyy/MM/dd hh:mm:ss.SSS";public final static String DATE_TIME_h_SSS_PATTERN4 = "yyyy.MM.dd hh:mm:ss.SSS";public final static String DATE_TIME_h_SSS_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss.SSS";public static String[] WEEK_ARRAY = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};public static String[] WEEK_ARRAY_CN = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};public static String[] WEEK_ARRAY_CN_TOW = {"", "周一", "周二", "周三", "周四", "周五", "周六", "周日"};// ===========================****************Date轉(zhuǎn)String方法****************===========================/*** Date轉(zhuǎn) 格式:DATE_YYYY_PATTERN = "yyyy";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYY(Date date) {return format(date, DATE_YYYY_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_YYYY_PATTERN2 = "yyyy年";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYY2(Date date) {return format(date, DATE_YYYY_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_MM_PATTERN = "MM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMM(Date date) {return format(date, DATE_MM_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_MM_PATTERN2 = "MM月";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMM2(Date date) {return format(date, DATE_MM_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_DD_PATTERN = "dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateDD(Date date) {return format(date, DATE_DD_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_DD_PATTERN2 = "dd日";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateDD2(Date date) {return format(date, DATE_DD_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN = "yyyy-MM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYYMM(Date date) {return format(date, DATE_YYYY_MM_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN2 = "yyyy/MM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYYMM2(Date date) {return format(date, DATE_YYYY_MM_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN3 = "yyyyMM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYYMM3(Date date) {return format(date, DATE_YYYY_MM_PATTERN3);}/*** Date轉(zhuǎn) 格式:DATE_YYYY_MM_PATTERN4 = "yyyy.MM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYYMM4(Date date) {return format(date, DATE_YYYY_MM_PATTERN4);}/*** Date轉(zhuǎn) 格式: DATE_YYYY_MM_PATTERN5 = "yyyy年MM";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateYYYYMM5(Date date) {return format(date, DATE_YYYY_MM_PATTERN5);}/*** Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN = "MM-dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMMDD(Date date) {return format(date, DATE_MM_DD_PATTERN);}/*** Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN2 = "MM/dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMMDD2(Date date) {return format(date, DATE_MM_DD_PATTERN2);}/*** Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN3 = "MMdd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMMDD3(Date date) {return format(date, DATE_MM_DD_PATTERN3);}/*** Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN4 = "MM.dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMMDD4(Date date) {return format(date, DATE_MM_DD_PATTERN4);}/*** Date轉(zhuǎn) 格式: DATE_MM_DD_PATTERN5 = "MM年dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateMMDD5(Date date) {return format(date, DATE_MM_DD_PATTERN5);}/*** Date轉(zhuǎn) 格式: DATE_PATTERN = "yyyy-MM-dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDate(Date date) {return format(date, DATE_PATTERN);}/*** Date轉(zhuǎn) 格式: DATE_PATTERN2 = "yyyy/MM/dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDate2(Date date) {return format(date, DATE_PATTERN2);}/*** Date轉(zhuǎn) 格式: DATE_PATTERN3 = "yyyyMMdd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDate3(Date date) {return format(date, DATE_PATTERN3);}/*** Date轉(zhuǎn) 格式: DATE_PATTERN4 = "yyyy.MM.dd";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDate4(Date date) {return format(date, DATE_PATTERN4);}/*** Date轉(zhuǎn) 格式: DATE_PATTERN5 = "yyyy年MM月dd日";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDate5(Date date) {return format(date, DATE_PATTERN5);}// ===========================****************String類型日期轉(zhuǎn)Date方法****************===========================/*** String類型日期轉(zhuǎn)Date方法** @param date 日期* @return Date日期對象*/public static Date parseDate(String date) {return parseDate(date, DATE_PATTERN);}/*** String類型日期轉(zhuǎn)Date方法** @param date 日期* @param pattern 規(guī)則* @return Date日期對象*/public static Date parseDate(String date, String pattern) {if (StringUtils.isBlank(date)) {return null;}if (StringUtils.isBlank(pattern)) {pattern = DATE_PATTERN;}SimpleDateFormat sdf = new SimpleDateFormat(pattern);try {return sdf.parse(date);} catch (ParseException e) {return null;}}// ===========================****************DateTime轉(zhuǎn)String方法****************===========================/*** Date轉(zhuǎn) 格式: TIME_HH_PATTERN = "HH";** @param date 日期 (24小時制)* @return 格式化后的日期字符串*/public static String formatTimeHH(Date date) {return format(date, TIME_HH_PATTERN);}/*** Date轉(zhuǎn) 格式: TIME_hh_PATTERN = "hh";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatTimeHh(Date date) {return format(date, TIME_hh_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_HH_PATTERN2 = "HH小時";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeHH2(Date date) {return format(date, TIME_HH_PATTERN2);}/*** Date轉(zhuǎn) 格式: TIME_hh_PATTERN2 = "hh小時";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatTimeHh2(Date date) {return format(date, TIME_hh_PATTERN2);}/*** Date轉(zhuǎn) 格式:TIME_MM_PATTERN = "mm";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeMM(Date date) {return format(date, TIME_MM_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_MM_PATTERN2 = "mm分鐘";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeMM2(Date date) {return format(date, TIME_MM_PATTERN2);}/*** Date轉(zhuǎn) 格式:TIME_SS_PATTERN = "ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeSS(Date date) {return format(date, TIME_SS_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_SS_PATTERN2 = "ss秒";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeSS2(Date date) {return format(date, TIME_SS_PATTERN2);}/*** Date轉(zhuǎn) 格式:TIME_HH_MM_PATTERN = "HH:mm";** @param date 日期 (24小時制)* @return 格式化后的日期字符串*/public static String formatTimeHHMM(Date date) {return format(date, TIME_HH_MM_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_hh_MM_PATTERN = "hh:mm";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatTimeHhMM(Date date) {return format(date, TIME_hh_MM_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_MM_SS_PATTERN = "mm:ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatTimeMMSS(Date date) {return format(date, TIME_MM_SS_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_HH_MM_SS_PATTERN = "HH:mm:ss";** @param date 日期 (24小時制)* @return 格式化后的日期字符串*/public static String formatTimeHHMMSS(Date date) {return format(date, TIME_HH_MM_SS_PATTERN);}/*** Date轉(zhuǎn) 格式:TIME_hh_MM_SS_PATTERN = "hh:mm:ss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatTimeHhMMSS(Date date) {return format(date, TIME_hh_MM_SS_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime(Date date) {return format(date, DATE_TIME_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN2 = "yyyyMMddHHmmss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime2(Date date) {return format(date, DATE_TIME_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN3 = "yyyy/MM/dd HH:mm:ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime3(Date date) {return format(date, DATE_TIME_PATTERN3);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN4 = "yyyy.MM.dd HH:mm:ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime4(Date date) {return format(date, DATE_TIME_PATTERN4);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime5(Date date) {return format(date, DATE_TIME_PATTERN5);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN6 = "yyyy年MM月dd日 HH時mm分ss秒";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime6(Date date) {return format(date, DATE_TIME_PATTERN6);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN7 = "yyyy年MM月dd日 HH小時mm分鐘ss秒";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime7(Date date) {return format(date, DATE_TIME_PATTERN7);}/*** Date轉(zhuǎn) 格式:DATE_TIME_PATTERN8 = "yyyy年MM月dd日HH小時mm分鐘ss秒";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTime8(Date date) {return format(date, DATE_TIME_PATTERN8);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN = "yyyy-MM-dd hh:mm:ss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH(Date date) {return format(date, DATE_TIME_h_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN2 = "yyyyMMddhhmmss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH2(Date date) {return format(date, DATE_TIME_h_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN3 = "yyyy/MM/dd hh:mm:ss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH3(Date date) {return format(date, DATE_TIME_h_PATTERN3);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN4 = "yyyy.MM.dd hh:mm:ss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH4(Date date) {return format(date, DATE_TIME_h_PATTERN4);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH5(Date date) {return format(date, DATE_TIME_h_PATTERN5);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN6 = "yyyy年MM月dd日 hh時mm分ss秒";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH6(Date date) {return format(date, DATE_TIME_h_PATTERN6);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN7 = "yyyy年MM月dd日 hh小時mm分鐘ss秒";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH7(Date date) {return format(date, DATE_TIME_h_PATTERN7);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_PATTERN8 = "yyyy年MM月dd日hh小時mm分鐘ss秒";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeH8(Date date) {return format(date, DATE_TIME_h_PATTERN8);}/*** Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN = "yyyy-MM-dd HH:mm:ss.SSS";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTimeSSS(Date date) {return format(date, DATE_TIME_SSS_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN2 = "yyyyMMddHHmmssSSS";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTimeSSS2(Date date) {return format(date, DATE_TIME_SSS_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN3 = "yyyy/MM/dd HH:mm:ss.SSS";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTimeSSS3(Date date) {return format(date, DATE_TIME_SSS_PATTERN3);}/*** Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN4 = "yyyy.MM.dd HH:mm:ss.SSS";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTimeSSS4(Date date) {return format(date, DATE_TIME_SSS_PATTERN4);}/*** Date轉(zhuǎn) 格式:DATE_TIME_SSS_PATTERN5 = "yyyy年MM月dd日 HH:mm:ss.SSS";** @param date 日期* @return 格式化后的日期字符串*/public static String formatDateTimeSSS5(Date date) {return format(date, DATE_TIME_SSS_PATTERN5);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN = "yyyy-MM-dd hh:mm:ss.SSS";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeHSSS(Date date) {return format(date, DATE_TIME_h_SSS_PATTERN);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN2 = "yyyyMMddhhmmssSSS";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeHSSS2(Date date) {return format(date, DATE_TIME_h_SSS_PATTERN2);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN3 = "yyyy/MM/dd hh:mm:ss.SSS";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeHSSS3(Date date) {return format(date, DATE_TIME_h_SSS_PATTERN3);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN4 = "yyyy.MM.dd hh:mm:ss.SSS";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeHSSS4(Date date) {return format(date, DATE_TIME_h_SSS_PATTERN4);}/*** Date轉(zhuǎn) 格式:DATE_TIME_h_SSS_PATTERN5 = "yyyy年MM月dd日 hh:mm:ss.SSS";** @param date 日期 (12小時制)* @return 格式化后的日期字符串*/public static String formatDateTimeHSSS5(Date date) {return format(date, DATE_TIME_h_SSS_PATTERN5);}/*** Date轉(zhuǎn)字符串公共格式化方法** @param date 日期* @param pattern 格式,格式化默認為yyyy-MM-dd* @return 格式化后的日期字符串*/public static String format(Date date, String pattern) {try {if (date != null) {if (StringUtils.isBlank(pattern)) {pattern = DATE_PATTERN;}SimpleDateFormat df = new SimpleDateFormat(pattern);return df.format(date);}} catch (Exception e) {return null;}return null;}// ===========================****************Date獲取時間戳方法****************===========================/*** 獲取當前時間的時間戳** @return 當前時間的時間戳*/public static long getNowTimestamp() {Date now = new Date();return getDateTimestamp(now);}/*** 獲取指定時間的時間戳** @param date 指定時間* @return 時間戳*/public static long getDateTimestamp(Date date) {if (date == null) {return 0;}return date.getTime();}// ===========================****************String類型日期獲取時間戳方法****************===========================/*** 獲取指定時間的時間戳** @param date 指定時間* 格式為 yyyy-MM-dd* @return 時間戳*/public static long getDateTimestampByYYYYMMDD(String date) {if (StringUtils.isBlank(date)) {return 0;}return getDateTimestamp(parseDate(date));}/*** 獲取指定時間的時間戳** @param date 指定時間* 格式為 yyyy-MM-dd* @return 時間戳*/public static long getDateTimestampByYYYYMMDDHHMMSS(String date) {if (StringUtils.isBlank(date)) {return 0;}return getDateTimestamp(parseDate(date, DATE_TIME_PATTERN));}// =============******Date日期對【秒】【分鐘】【小時】【天】【周】【月】【年】進行加(+)/減(-)方法*********==============/*** 對日期的【秒】進行加/減** @param date 日期* @param seconds 秒數(shù),負數(shù)為減* @return 加/減幾秒后的日期*/public static Date addDateSeconds(Date date, int seconds) {return getDateTime(date) != null ? getDateTime(date).plusSeconds(seconds).toDate() : null;}/*** 對日期的【分鐘】進行加/減** @param date 日期* @param minutes 分鐘數(shù),負數(shù)為減* @return 加/減幾分鐘后的日期*/public static Date addDateMinutes(Date date, int minutes) {return getDateTime(date) != null ? getDateTime(date).plusMinutes(minutes).toDate() : null;}/*** 對日期的【小時】進行加/減** @param date 日期* @param hours 小時數(shù),負數(shù)為減* @return 加/減幾小時后的日期*/public static Date addDateHours(Date date, int hours) {return getDateTime(date) != null ? getDateTime(date).plusHours(hours).toDate() : null;}/*** 對日期的【天】進行加/減** @param date 日期* @param days 天數(shù),負數(shù)為減* @return 加/減幾天后的日期*/public static Date addDateDays(Date date, int days) {return getDateTime(date) != null ? getDateTime(date).plusDays(days).toDate() : null;}/*** 對日期的【周】進行加/減** @param date 日期* @param weeks 周數(shù),負數(shù)為減* @return 加/減幾周后的日期*/public static Date addDateWeeks(Date date, int weeks) {return getDateTime(date) != null ? getDateTime(date).plusWeeks(weeks).toDate() : null;}/*** 對日期的【月】進行加/減** @param date 日期* @param months 月數(shù),負數(shù)為減* @return 加/減幾月后的日期*/public static Date addDateMonths(Date date, int months) {return getDateTime(date) != null ? getDateTime(date).plusMonths(months).toDate() : null;}/*** 對日期的【年】進行加/減** @param date 日期* @param years 年數(shù),負數(shù)為減* @return 加/減幾年后的日期*/public static Date addDateYears(Date date, int years) {return getDateTime(date) != null ? getDateTime(date).plusYears(years).toDate() : null;}/*** 獲取日期時間對象** @param date 日期* @return 日期時間對象*/public static DateTime getDateTime(Date date) {if (date == null) {return null;}return new DateTime(date);}// =============******Date日期比較方法*********==============/*** 比較兩個時間是否相等,只比較年** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYY(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 清除時、分、秒和毫秒cal1.set(Calendar.HOUR_OF_DAY, 0);cal1.set(Calendar.MINUTE, 0);cal1.set(Calendar.SECOND, 0);cal1.set(Calendar.MILLISECOND, 0);cal2.set(Calendar.HOUR_OF_DAY, 0);cal2.set(Calendar.MINUTE, 0);cal2.set(Calendar.SECOND, 0);cal2.set(Calendar.MILLISECOND, 0);// 現(xiàn)在只比較年return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);}/*** 比較兩個時間是否相等,只比較年* (Java8+)** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYJava8(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();// 現(xiàn)在只比較年return ld1.getYear() == ld2.getYear();}/*** 比較兩個時間是否相等,只比較年月** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMM(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 清除時、分、秒和毫秒cal1.set(Calendar.HOUR_OF_DAY, 0);cal1.set(Calendar.MINUTE, 0);cal1.set(Calendar.SECOND, 0);cal1.set(Calendar.MILLISECOND, 0);cal2.set(Calendar.HOUR_OF_DAY, 0);cal2.set(Calendar.MINUTE, 0);cal2.set(Calendar.SECOND, 0);cal2.set(Calendar.MILLISECOND, 0);// 現(xiàn)在只比較年和月return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);}/*** 比較兩個時間是否相等,只比較年月* (Java8+)** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMMJava8(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();// 現(xiàn)在只比較年和月return ld1.getYear() == ld2.getYear() &&ld1.getMonthValue() == ld2.getMonthValue();}/*** 比較兩個時間是否相等,只比較年月日** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMMDD(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 清除時、分、秒和毫秒cal1.set(Calendar.HOUR_OF_DAY, 0);cal1.set(Calendar.MINUTE, 0);cal1.set(Calendar.SECOND, 0);cal1.set(Calendar.MILLISECOND, 0);cal2.set(Calendar.HOUR_OF_DAY, 0);cal2.set(Calendar.MINUTE, 0);cal2.set(Calendar.SECOND, 0);cal2.set(Calendar.MILLISECOND, 0);// 現(xiàn)在只比較年和月和日return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) &&cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);}/*** 比較兩個時間是否相等,只比較年月日* (Java8+)** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMMDDJava8(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();// 現(xiàn)在只比較年和月和日return ld1.getYear() == ld2.getYear() &&ld1.getMonthValue() == ld2.getMonthValue() &&ld1.getDayOfMonth() == ld2.getDayOfMonth();}/*** 比較兩個時間是否相等,只比較年月日時分秒** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMMDDHHMMSS(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 清除毫秒cal1.set(Calendar.MILLISECOND, 0);cal2.set(Calendar.MILLISECOND, 0);// 現(xiàn)在只比較年和月和日、時分秒return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) &&cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH) &&cal1.get(Calendar.HOUR_OF_DAY) == cal2.get(Calendar.HOUR_OF_DAY) &&cal1.get(Calendar.MINUTE) == cal2.get(Calendar.MINUTE) &&cal1.get(Calendar.SECOND) == cal2.get(Calendar.SECOND);}/*** 比較兩個時間是否相等,只比較年月日時分秒* (Java8+)** @param date1 時間1* @param date2 時間2* @return 是否相等*/public static boolean compareEqualDateYYYYMMDDHHMMSSJava8(Date date1, Date date2) {if (date1 == null || date2 == null) {return false;}LocalDateTime ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDateTime();LocalDateTime ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDateTime();// 現(xiàn)在只比較年和月和日、時分秒return ld1.getYear() == ld2.getYear() &&ld1.getMonthValue() == ld2.getMonthValue() &&ld1.getDayOfMonth() == ld2.getDayOfMonth() &&ld1.getHour() == ld2.getHour() &&ld1.getMinute() == ld2.getMinute() &&ld1.getSecond() == ld2.getSecond();}/*** 比較兩個時間大小,只比較年* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYY(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 提取年份和月份int year1 = cal1.get(Calendar.YEAR);int year2 = cal2.get(Calendar.YEAR);// 首先比較年份,如果年份不同,則直接返回結(jié)果if (year1 != year2) {return Integer.compare(year1, year2);}return 0;}/*** 比較兩個時間大小,只比較年* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYJava8(Date date1, Date date2) {LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();return Integer.compare(ld1.getYear(), ld2.getYear());}/*** 比較兩個時間大小,只比較年月* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMM(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 提取年份和月份int year1 = cal1.get(Calendar.YEAR);int month1 = cal1.get(Calendar.MONTH); // 注意:Calendar中的月份是從0開始的int year2 = cal2.get(Calendar.YEAR);int month2 = cal2.get(Calendar.MONTH);// 首先比較年份,如果年份不同,則直接返回結(jié)果if (year1 != year2) {return Integer.compare(year1, year2);}// 如果年份相同,則比較月份return Integer.compare(month1, month2);}/*** 比較兩個時間大小,只比較年月* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMMJava8(Date date1, Date date2) {LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();// 如果年份相同,則比較月份return Integer.compare(ld1.getYear() * 100 + ld1.getMonthValue(),ld2.getYear() * 100 + ld2.getMonthValue());}/*** 比較兩個時間大小,只比較年月日* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMMDD(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 提取年份和月份int year1 = cal1.get(Calendar.YEAR);int month1 = cal1.get(Calendar.MONTH); // 注意:Calendar中的月份是從0開始的int day1 = cal1.get(Calendar.DAY_OF_MONTH);int year2 = cal2.get(Calendar.YEAR);int month2 = cal2.get(Calendar.MONTH);int day2 = cal2.get(Calendar.DAY_OF_MONTH);// 首先比較年份,如果年份不同,則直接返回結(jié)果if (year1 != year2) {return Integer.compare(year1, year2);}if (month1 != month2) {// 如果年份相同,則比較月份return Integer.compare(month1, month2);}// 如果月份相同,則比較日期return Integer.compare(day1, day2);}/*** 比較兩個時間大小,只比較年月日* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMMDDJava8(Date date1, Date date2) {LocalDate ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDate();LocalDate ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDate();// 使用LocalDate的compareTo方法來比較年月日return ld1.compareTo(ld2);}/*** 比較兩個時間大小,只比較年月日時分秒* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMMDDHHMMSS(Date date1, Date date2) {Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);// 清除毫秒部分(如果需要的話,實際上Calendar的比較默認就會忽略毫秒)// 但為了明確表明我們的意圖,我們可以將毫秒設(shè)置為0cal1.set(Calendar.MILLISECOND, 0);cal2.set(Calendar.MILLISECOND, 0);// 比較兩個Calendar對象if (cal1.equals(cal2)) {return 0;} else if (cal1.before(cal2)) {return -1;} else {return 1;}}/*** 比較兩個時間大小,只比較年月日時分秒* 注意:時間參數(shù)不可為空** @param date1 時間1* @param date2 時間2* @return >0 : 時間1 大于(>) 時間2* <0 : 時間1 小于(<) 時間2* =0 : 時間1 等于(=) 時間2*/public static int compareDateYYYYMMDDHHMMSSJava8(Date date1, Date date2) {LocalDateTime ld1 = ZonedDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()).toLocalDateTime();LocalDateTime ld2 = ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).toLocalDateTime();// 使用LocalDate的compareTo方法來比較年月日return ld1.compareTo(ld2);}/*** 檢查兩個時間之間的差異是否大于等于30分鐘** @param date1 第一個時間* @param date2 第二個時間* @return 如果時間差大于等于30分鐘,則返回true;否則返回false*/public static boolean isTimeDifferenceMoreThanOrEqual30Minutes(Date date1, Date date2) {long diffInMillis = Math.abs(date2.getTime() - date1.getTime()); // 計算時間差(毫秒)long diffInMinutes = diffInMillis / (1000 * 60); // 將毫秒轉(zhuǎn)換為分鐘return diffInMinutes >= 30;}/*** 檢查兩個時間之間的差異是否大于等于多少分鐘** @param date1 第一個時間* @param date2 第二個時間* @param num 多少分鐘,自定義* @return 如果時間差大于等于30分鐘,則返回true;否則返回false*/public static boolean isTimeDifferenceMoreThanOrEqual30Minutes(Date date1, Date date2, Integer num) {long diffInMillis = Math.abs(date2.getTime() - date1.getTime()); // 計算時間差(毫秒)long diffInMinutes = diffInMillis / (1000 * 60); // 將毫秒轉(zhuǎn)換為分鐘return diffInMinutes >= 30;}// =============******Date日期獲取方法*********==============/*** 根據(jù)年份獲取所有月份* @param year 年份* @return 所有月份*/public static List<String> traverseMonthsOfYear(Integer year){if(year == null){return Lists.newArrayList();}// 遍歷年份和月份Calendar calendar = Calendar.getInstance();calendar.set(year, Calendar.JANUARY, 1); // 設(shè)置為2024年1月1日List<String> months = Lists.newArrayList();while (calendar.get(Calendar.YEAR) == year) { // 假設(shè)只處理2024年的數(shù)據(jù)int month = calendar.get(Calendar.MONTH) + 1; // 月份是從0開始的,所以要加1months.add(String.valueOf(month));// 移動到下一個月calendar.add(Calendar.MONTH, 1);}return months;}/*** 根據(jù)年份+月份獲取月份的所有周* @param year 年份* @param month 月份* @return 所有周*/public static List<String> traverseWeeksOfMonth(Integer year, Integer month) {if(year == null || month == null){return Lists.newArrayList();}Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1); // 設(shè)置日期為月份的第一天List<String> weeks = Lists.newArrayList();// 循環(huán)直到我們到達下一個月的第一天while (calendar.get(Calendar.MONTH) == month - 1) {int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);weeks.add(String.valueOf(weekOfYear));// 移動到下一天calendar.add(Calendar.WEEK_OF_MONTH, 1);// 如果我們已經(jīng)到達了下個月,則退出循環(huán)if (calendar.get(Calendar.WEEK_OF_MONTH) == 1 && calendar.get(Calendar.MONTH) != month - 1) {break;}}return weeks;}/*** 根據(jù)年份+月份獲取月份的所有天* @param year 年份* @param month 月份* @return 所有天 (格式:日)*/public static List<String> traverseDaysOfMonth(Integer year, Integer month) {if(year == null || month == null){return Lists.newArrayList();}List<String> days = Lists.newArrayList();Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1); // 注意月份是從0開始的// 遍歷當月的每一天while (calendar.get(Calendar.MONTH) == month - 1) {int day = calendar.get(Calendar.DAY_OF_MONTH);days.add(String.valueOf(day));// 移動到下一天calendar.add(Calendar.DAY_OF_MONTH, 1);}return days;}/*** 根據(jù)年份+月份獲取月份的所有天* 跨年跨月* @return 所有天 (格式:月-日)*/public static List<String> traverseDaysOfMonth(Integer startYear, Integer startMonth, Integer startDay,Integer endYear, Integer endMonth, Integer endDay) {if(startYear == null || startMonth == null || startDay == null|| endYear == null || endMonth == null || endDay == null){return Lists.newArrayList();}List<String> days = Lists.newArrayList();Calendar startDate = Calendar.getInstance();startDate.set(startYear, startMonth - 1, startDay); // 注意月份是從0開始的,所以12月是Calendar.DECEMBERCalendar endDate = Calendar.getInstance();endDate.set(endYear, endMonth - 1, endDay);// 循環(huán)遍歷并打印每一天while (!startDate.after(endDate)) {// 打印日期,使用SimpleDateFormat來格式化日期輸出// 這里簡單使用toString()展示,實際使用中可以根據(jù)需要格式化int year = startDate.get(Calendar.YEAR);int month = startDate.get(Calendar.MONTH);int day = startDate.get(Calendar.DAY_OF_MONTH);days.add(((month + 1) < 10 ? "0" + (month + 1) : (month + 1))+ "-"+ (day < 10 ? "0" + day : day));// 將startDate向前推進一天startDate.add(Calendar.DAY_OF_MONTH, 1);}return days;}/*** 根據(jù)年份+月份獲取指定天的所有小時* @param year 年份* @param month 月份* @return 所有小時*/public static List<String> traverseHoursOfDay(Integer year, Integer month, Integer day){if(year == null || month == null || day == null){return Lists.newArrayList();}List<String> hours = Lists.newArrayList();// 設(shè)置Calendar實例為某一天(例如,2023年1月1日)Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, day); // 注意月份是從0開始的// 獲取當前時間Calendar curCalendar = Calendar.getInstance();// 獲取當前時間的日期int curDayOfMonth = curCalendar.get(Calendar.DAY_OF_MONTH);// 獲取當前時間的小時(24小時制)int curHour = curCalendar.get(Calendar.HOUR_OF_DAY);// 遍歷當天的每一個小時for (int hour = 0; hour < 24; hour++) {// 設(shè)置小時calendar.set(Calendar.HOUR_OF_DAY, hour);// 獲取并打印當前時間(這里只打印日期和小時,分鐘和秒設(shè)為0)// 注意:如果你想要包含分鐘和秒,可以保持它們?yōu)楫斍爸祷蝻@式設(shè)置為0calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);hours.add((hourOfDay < 10 ? "0" + hourOfDay : String.valueOf(hourOfDay)) + ":00");if(dayOfMonth == curDayOfMonth && hourOfDay == curHour){break;}}return hours;}}
作者:筱白愛學習!!
歡迎關(guān)注轉(zhuǎn)發(fā)評論點贊溝通,您的支持是筱白的動力!