一、CalendarUtil

相关方法:

1.  calendar(时间):获取Calendar型对象。

参数说明:时间:

a.  参数为空:获取Calendar的实例对象eg: calendar.get(Calendar.MONTH)

b.  Date型对象:把Date转为Calendar。

c.  long型时间戳: 转换为Calendar对象,使用当前默认时区。

d.  long型时间戳, TimeZone型时区: 转换为Calendar对象eg:CalendarUtil.calendar(..., TimeZone.getTimeZone("GMT+:08:00"));

2.  isAM(Calendar):是否为上午。

3.  isPM(Calendar):是否为下午。

4.  truncate(Calendar, DateField):修改日期为开始时间。参数说明: DateField:指定一个时间字段,该字段以下全部转为开始时间。

5.  round(Calendar, DateField):修改日期为四舍五入值。参数说明: DateField:指定一个时间字段,该字段以下全部四舍五入。

6.  ceiling(Calendar, DateField,是否毫秒归零):修改日期为结束时间。参数说明: DateField:指定一个时间字段,该字段以下全部转为结束时间。是否毫秒归零: 可选,布尔值,有时候由于毫秒部分必须为0(如MySQL数据库中)

7.  beginOfSecond(Calendar):修改毫秒为最小值

8.  endOfSecond(Calendar):修改毫秒为最大值

9.  beginOfMinute(Calendar):修改秒为最小值

10. endOfMinute(Calendar):修改秒为最大值

11. beginOfHour(Calendar):修改分钟为最小值

12. endOfHour(Calendar):修改分钟为最大值

13. beginOfDay(Calendar):修改小时为最小值

14. endOfDay(Calendar):修改小时为最大值

15. beginOfWeek(Calendar,isMondayAsFirstDay):修改天为一周最小值。参数说明: isMondayAsFirstDay:可选。是则周一为最小值,否则周日为最小值,不填则为true。

16. endOfWeek(Calendar,isSundayAsLastDay):修改天为一周最大值。参数说明: isSundayAsLastDay:可选。是则周日为最大值,否则周六为最大值,不填则为true。

17. beginOfMonth(Calendar):修改天为该月最小值。

18. endOfMonth(Calendar):修改天为该月最大值。

19. beginOfQuarter(Calendar):修改为该季度的开始月份和日期。

20. endOfQuarter(Calendar):修改为该季度的结束月份和日期。

21. beginOfYear(Calendar):修改月为最小值

22. endOfYear(Calendar):修改月为最大值

23. isSameDay(cal1,cal2):比较是否为同一天

24. isSameWeek(cal1,cal2,是否周一是第一天):比较是否为同一周。

25. isSameMonth(cal1,cal2):比较是否为同一月

26. isSameInstant(cal1,cal2):比较是否为相同时间戳

27. yearAndQuarter(参数):获取年份和季度。

参数说明:

a.  Calendar类:返回字符串eg:20233

b.  long1,long2: 都为13位毫秒时间戳,结束时间必须大于开始时间,获取两个时间直接的所有年份和季度字符串并返回为Set

28. getBeginValue(Calendar, dateField):获取指定字段的最小值。参数说明: dateField:可传DateField常量类或直接传int值。

29. getEndValue(Calendar, dateField): 获取指定字段的最大值。参数说明: dateField:可传DateField常量类或直接传int值。

30. toInstant(Calendar):转为Instant类

31. toLocalDateTime(Calendar):转为LocalDateTime类

32. compare(cal1,cal2):进行日期比较。cal1<cal2为-1.cal1>cal2为1.cal1=cal2为0.

33. age(cal1,cal2):计算cal2-cal1的年份差。即计算年龄。

34. formatChineseDate(Calendar,是否包含时间部分):获取日期的大写中文字符串。参数说明:是否包含时间部分:布尔值。若为true则一起返回时间的字符串格式。

35.parseByPatterns(日期字符串,地区,是否使用严格模式,时间格式数组):将日期字符串转为Calendar类。参数说明:日期字符串:非空,例”2023-10-07”。地区: Locale中的常量值。是否使用严格模式:Calendar类中解释:关闭可使用1996年2月942日,指的是1日后941天,开启若超出范围则报错。实际该参数不会引起本方法报错。时间格式数组:字符串型时间格式,必须和日期字符串格式相同或数组中有一个相同,如此会返回满足类型的,否则报错。例"yyyy-MM-dd HH:mm:ss"。

36.parse(日期字符串,是否使用严格模式, DateParser):根据指定DateParser格式转换成Calendar类。参数说明: DateParser:抽象类。创建实例对象使用FastDateParser(String Patten, TimeZone, Locale):该方法为SimpleDateFormat的线程安全版本,引用自Apache Lang.eg: DateParser parser = new FastDateParser("yyyy-MM-dd HH:mm:ss",TimeZone.getTimeZone("Asia/Shanghai"),Locale.CHINA)。


二、LocalDateTimeUtil

相关方法:

1.  now():获取LocalDateTime类当前时间

2.  of(参数): 获取LocalDateTime类时间。参数选择:

a.  Instant

b.  ZonedDateTime

c.  Date

d.  TemporalAccessor

e.  long毫秒

f.  Instant, ZoneId

g.  Instant, TimeZone

h.  long毫秒, ZoneId

i.  long毫秒, TimeZone

3. ofUTC(参数): 获取LocalDateTime类UTC时间。参数选择:

   a.Instant

   b.long毫秒

4. ofDate(TemporalAccessor):转为LocalDate

5. parse(参数):转为LocalDateTime。参数选择:

   a.时间字符串

   b.时间字符串, DateTimeFormatter

   c.时间字符串,String时间格式

6. parseDate(参数):转为LocalDate。参数选择:

   a.时间字符串

   b.时间字符串, DateTimeFormatter

   c.时间字符串,String时间格式

7. formatNormal(参数):转为String类时间。参数选择:

   a. LocalDateTime

   b. LocalDate

8. format(参数):转为String类指定时间格式的时间。参数选择:

   a. LocalDateTime, DateTimeFormatter

   b. LocalDateTime, String

   c. LocalDate, DateTimeFormatter

   d. LocalDate, String

9. offset(LocalDateTime,long, TemporalUnit):偏移并返回LocalDateTime类时间。参数说明: long:正数为正偏移,负数为负偏移。TemporalUnit:偏移单位,调用ChronoUnit

10. between(参数):获取两个时间差,开始>结束,值为负。参数选择:

   a. LocalDateTime开始,LocalDateTime结束:返回Duration类。

   b. LocalDateTime开始,LocalDateTime结束, ChronoUnit:根据时间单位返回long值

11. betweenPeriod(LocalDate1, LocalDate2):获取Period类。

12. beginOfDay(LocalDateTime):返回LocalDateTime类该值一天的开始时间

13. endOfDay(LocalDateTime,是否毫秒归零):返回LocalDateTime类该值一天的结束时间。参数说明:是否毫秒归零:可选,布尔值。

14. toEpochMilli(TemporalAccessor):转为long型时间戳。

15.isWeekend(LocalDateTime/LocalDate):返回是否为周末。

16. dayOfWeek(LocalDate):获取星期的值。

17. isOverlap(LocalDateTime1, LocalDateTime2, LocalDateTime3, LocalDateTime4):判断1-2和3-4是否有交集。

18. weekOfYear(TemporalAccessor):获取指定日期为一年的第几周,判断方法见该方法说明。

19.isSameDay(LocalDateTime/LocalDate1, LocalDateTime/LocalDate2):判断两个日期是否为同一天。

20.isIn(LocalDateTime, LocalDateTime1, LocalDateTime2,是否包含时间1,是否包含时间2):判断日期是否在1-2时间中,默认包含1和2的时间。参数说明:是否包含时间1、是否包含时间2:可选,true为包含。


三、DateUtil

该方法继承自CalendarUtil。

相关方法:

1. date(时间):获取DateTime类对象,且格式为yyyy-MM-dd HH:mm:ss。该类继承自Date对象。

参数说明:时间。

a. 空。

b. Date类。

c. long型毫秒时间戳。

d. Calendar类。

e. TemporalAccessor类。创建实例:时间格式和text需相同。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);

TemporalAccessor parse = formatter.parse("2023-10-08 08:00:00");

2. dateSecond():获取DateTime类对象,返回毫秒。

3. dateNew(Date类):根据Date获取新的DateTime类对象。

4. current():获取当前时间的时间戳(毫秒)。Java常使用该方法。eg:1696730779416L

5. currentSecond():获取当前时间的时间戳(秒)。eg: 1696730779L

6. now():获取yyyy-MM-dd HH:mm:ss格式的字符串

7. today():获取yyyy-MM-dd格式的字符串

8. year(Date类):获取int类型的年

9. quarter(Date类):获取int类型的季度

10. quarterEnum(Date类):获取枚举类Quarter, 使用getValue方法获取季度

11. month(Date类):获取int类型的月

12. monthEnum(Date类):获取枚举类Month,使用getValueBaseOne获取值,当前月;getValue方法获取值,月,和Calendar类一样都为当前月份减一。

13. weekOfYear(Date类):获取int类型当前年份的周数

14. weekOfMonth(Date类):获取int类型当前月份的周数

15. dayOfMonth(Date类):获取int类型当前月份的天数

16. dayOfWeek(Date类):获取int类型当前周的天数

17. dayOfWeekEnum(Date类):获取枚举类Week,使用getIso8601Value方法获取值,星期几。

18. isWeekend(Date类):获取布尔型是否为周末

19. hour(Date类,是否是24小时制):获取int类型的小时。参数说明:是否是24小时制,布尔值。

20. minute(Date类):获取int类型的分钟。

21. second(Date类):获取int类型的秒。

22. millisecond(Date类):获取int类型的豪秒。

23. isAM(Date类):获取布尔型是否是上午

24. isPM(Date类):获取布尔型是否是下午

25. thisYear():获取当前年

26. thisMonth():获取当前月

27. thisMonthEnum():获取当前Month枚举类

28. thisWeekOfYear():获取当前年份的周数

29. thisWeekOfMonth():获取当前月份的周数

30. thisDayOfMonth():获取当前月份的天数

31. thisDayOfWeek():获取当前周的天数

32. thisDayOfWeekEnum():获取当前Week枚举类

33. thisHour(是否是24小时制):获取当前小时。参数说明:是否是24小时制,布尔值

34. thisMinute():获取当前分钟

35. thisSecond():获取当前秒

36. thisMillisecond():获取当前毫秒

37. yearAndQuarter(参数):获取年份和季度。

参数说明:

a.Calendar类:返回字符串eg:20233

b.long1,long2: 都为13位毫秒时间戳,结束时间必须大于开始时间,获取两个时间直接的所有年份和季度字符串并返回为Set.

38. formatLocalDateTime(LocalDateTime):返回yyyy-MM-dd HH:mm:ss格式的字符串

39. format(时间,时间格式):返回指定时间格式的字符串.参数说明:参数搭配

   a. LocalDateTime,String

   b. Date,String

   c. Date,DatePrinter:创建DatePrinter实例使用FastDatePrinter.eg: FastDatePrinter printer = new FastDatePrinter("yyyy-MM-dd HH:mm:ss",TimeZone.getTimeZone("America/Chicago"),Locale.US);

   d. Date, DateFormat:创建DateFormat实例使用SimpleDateFormat.eg: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA);

   e. Date, DateTimeFormatter:eg: DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")

40. formatDateTime(Date):返回yyyy-MM-dd HH:mm:ss格式的字符串

41. formatDate(Date):返回yyyy-MM-dd格式的字符串

42. formatTime(Date):返回HH:mm:ss格式的字符串

43. formatHttpDate(Date):返回Http标准的字符串

44. formatChineseDate(Date,是否采用大写形式,是否包含时间部分):返回中文格式的字符串.参数说明:是否采用大写格式:布尔值.为false返回例如2023年10月09日09时21分13秒,为true返回例如二〇二三年十月九日九时二十二分三十六秒. 是否包含时间部分:布尔值.

45. parseLocalDateTime(字符串,时间格式):返回LocalDateTime类型,yyyy-MM-dd HH:mm:ss格式的时间.参数说明:字符串:若时间格式不填则必须为yyyy-MM-dd HH:mm:ss格式.时间格式:可选,自定义时间格式

46. parse(参数):将时间字符串和格式转为DateTime.参数说明:参数搭配。

   a.字符串, DateFormat.例子见DateUtil 39.d。

   b.字符串, DateParser.例子见CalendarUtil 36。

   c.字符串, DateParser,是否是宽容模式

   d.字符串, DateTimeFormatter.例子见DateUtil 39.e。

   e.字符串,时间格式字符串

   f.字符串,时间格式字符串,Locale

   g.字符串,时间格式数组:数组中逐个尝试返回符合格式的

   h.字符串:返回符合格式的字符串

47. parseDateTime(字符串):返回DateTime型yyyy-MM-dd HH:mm:ss格式的字符串。参数说明:字符串:支持多格式.必须满足年月日时分秒,具体见方法内说明。

48. parseDate(字符串):返回DateTime型yyyy-MM-dd格式的字符串。时间默认为00:00:00

49. parseTime(字符串):返回DateTime型HH:mm:ss格式的字符串。日期默认为1970-01-01

50. parseTimeToday(字符串):返回DateTime型今天日期+字符串的时间.参数说明:字符串:为HH:mm:ss格式。

51. parseUTC(字符串):把UTC时间字符串转为返回DateTime型时间。具体字符串格式见源代码,eg: 2023-10-10T10:00:00+0800

52. parseCST(字符串):把CST时间字符串转为返回DateTime型时间。eg: Wed Oct 11 08:00:00 CST 2023

53. truncate(Date, DateField):见CalendarUtil 4

54. round(Date, DateField): 见CalendarUtil 5

55. ceiling(Date, DateField): 见CalendarUtil 6

56. beginOfSecond(Date):修改毫秒为最小值

57. endOfSecond(Date):修改毫秒为最大值

58. beginOfMinute(Date):修改秒为最小值

59. endOfMinute(Date):修改秒为最大值

60. beginOfHour(Date):修改分钟为最小值

61. endOfHour(Date):修改分钟为最大值

62. beginOfDay(Date):修改小时为最小值

63. endOfDay(Date):修改小时为最大值

64. beginOfWeek(Date,isMondayAsFirstDay):修改天为一周最小值。参数说明: isMondayAsFirstDay:可选。是则周一为最小值,否则周日为最小值,不填则为true。

65. endOfWeek(Date,isSundayAsLastDay):修改天为一周最大值。参数说明: isSundayAsLastDay:可选。是则周日为最大值,否则周六为最大值,不填则为true。

66. beginOfMonth(Date):修改天为该月最小值。

67. endOfMonth(Date):修改天为该月最大值。

68. beginOfQuarter(Date):修改为该季度的开始月份和日期。

69. endOfQuarter(Date):修改为该季度的结束月份和日期。

70. beginOfYear(Date):修改月为最小值

71. endOfYear(Date):修改月为最大值

72. yesterday():昨天

73. tomorrow():明天

74. lastWeek():上周

75. nextWeek():下周

76. lastMonth():上月

77. nextMonth():下月

78. offsetMillisecond(Date,int):偏移毫秒。参数说明:int:正为未来,负为过去

79. offsetSecond(Date,int):偏移秒。

80. offsetMinute(Date,int):偏移分钟。

81. offsetHour(Date,int):偏移小时。

82. offsetDay(Date,int):偏移天。

83. offsetWeek(Date,int):偏移周。

84. offsetMonth(Date,int):偏移月。

85. offset(Date,DateField,int):根据DateField指定的单位偏移。

86. between(Date1,Date2, DateUnit,是否为绝对值):计算两个日期差Date2 - Date1。参数说明:是否为绝对值:可选,若为true始终为正。

87. betweenMs(Date1,Date2):获取两个日期的毫秒差。

88. betweenDay(Date1,Date2,是否重置时间):计算两个日期差,不足24小时则不为一天。参数说明:是否重置时间:若为true则把两个时间的时分秒都设为0,两个日期不足24小时的部分算为+1天。

89. betweenWeek(Date1,Date2,是否重置时间):计算两个周数差,不足24小时则不为一天。

90. betweenMonth(Date1,Date2,是否重置时间):计算两个月份差,不足24小时则不为一天。

91. betweenYear(Date1,Date2,是否重置时间):计算两个年份差,不足24小时则不为一天。

92. formatBetween(参数):返回“天小时分秒”格式的字符串。参数搭配:

   a.Date1,Date2, BetweenFormatter.Level:返回两个日期差, BetweenFormatter.Level:精确到的天数单位

   b.Date1,Date2

   c.long:传入2个日期相差的毫秒数

   d.long, BetweenFormatter.Level

93. isIn(Date,Date1,Date2):检查Date是否在两个时间内,返回布尔值。Date1和Date2可以互换。

94. isSameTime(Date1,Date2):比较两个日期时间戳是否相同,返回布尔值。

95. isSameDay(Date1,Date2):比较两个日期是否是同一天。

96. isSameWeek(Date1,Date2,是否是周一):比较两个日期是否是同一周。参数说明:是否是周一:若为true则周一为一周第一天,false则周日为一周第一天。

97. isSameMonth(Date1,Date2):比较两个日期是否是同一月。

98. spendNt(long):纳秒计时,可用于记录程序的执行时间。计算系统时间和long的时间差,long单位为纳秒。

99. spendMs(long):毫秒计时,可用于记录程序的执行时间。计算系统时间和long的时间差,long单位为毫秒。

100.timer(是否精确到纳秒):创建TimeInterval类的计时器,具体方法见TimeInterval源码:启动,获取启动后的时间等。参数说明:是否精确到纳秒:默认为false,使用纳秒

101. createStopWatch(id):创建一个可创建多任务的计时秒表,创建子任务名,获取状态等方法,具体见StopWatch源码。参数说明:id:可选,秒表唯一id。

102. ageOfNow(String/Date):返回int型年龄,支持parse方法中的所有格式

103. age(Date1,Date2):比较两个日期间的年龄

104. isLeapYear(int):返回是否是闰年

105. timeToSecond(字符串):把HH:mm:ss格式的字符串转为int形式的秒数。

106. secondToTime(int):把int形式的秒数转为HH:mm:ss格式的字符串

107. range(Date1,Date2, DateField)设置两个日期以及定义步长的DateRange时间范围器,使用方法见下方。

108. rangeContains(DateRange1, DateRange2):取交集。

109. rangeNotContains(DateRange1, DateRange2):取2-1的差集

110. rangeFunc(Date1,Date2, DateField,Function):根据Function函数取定义时间段、步长的值

111. rangeConsume(Date1,Date2, DateField,Consumer): 根据Consumer函数取定义时间段、步长的值

112. rangeToList(Date1,Date2,DateField,int):获取List<DateTime>参数说明:DateField:步长单位,int:步长值

113. getZodiac(月,日):获取星座

114. getChineseZodiac(年):获取生肖

115. compare(Date1,Date2,日期格式):比较2个日期,1>2返回1,1<2返回-1,1=2返回0.参数说明:日期格式:选填,可为空,字符串

116. nanosToMillis(long):纳秒转毫秒

117. nanosToSeconds(long):纳秒转秒

118. toInstant(Date/TemporalAccessor):转为Instant类. TemporalAccessor说明见DateUtil 1.e

119. toLocalDateTime(Date/Instant):转为LocalDateTime类,类似方法见45

120. convertTimeZone(Date,时区):根据时区和Date获取DateTime类时间。

参数说明:时区。

a. ZoneId.可使用ZoneId.of()方法获取ZoneId实例。eg: ZoneId.of("+08:00")或ZoneId.of("Asia/Shanghai")

b. TimeZone. getTimeZone()方法输入地区eg: TimeZone.getTimeZone("Asia/Shanghai")

121. lengthOfYear(int):获取指定年份的总天数

122.lengthOfMonth (int,是否是闰年):获取指定月份的总天数.参数说明:是否是闰年:布尔值

123. newSimpleFormat(String, Locale, TimeZone):获取指定字符串格式的时间格式SimpleDateFormat.参数说明: Locale:可选,自调用时区。TimeZone:可选, TimeZone.getTimeZone()方法输入地区。

124. getShotName(TimeUnit):获取时长单位缩写字符串。

125. isOverlap(Date1,Date2,Date3,Date4)获取D1-D2和D3-D4时间段是否有交集,返回布尔值。


四、农历相关

ChineseMonth-月

公历与农历: 一:正; 二:二; 三:三; 四:四; 五:五; 六:六; 七:七; 八:八; 九:九; 十:十、寒; 十一:十一、冬; 十二:腊

方法:

1. isLeapMonth(int农历年,int农历月):判断是否为闰月

2. getChineseMonthName(boolean是否为闰,int月份,boolean是否为传统表示):输入指定月份中国格式的时间字符串


GanZhi-天干地支

十天干:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)

十二地支:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、亥(hài)

方法:

1. cyclicalm(int):根据值传回干支.0-59为循环

2. getGanzhiOfYear(int年):返回干支年

3. getGanzhiOfMonth(int年,int月,int日):返回干支月

4. getGanzhiOfDay(int年,int月,int日):返回干支日


LunarFestival

节日:

正月一日:春节

正月二日:犬日

正月三日:猪日

正月四日:羊日

正月五日:牛日 破五日

正月六日:马日 送穷日

正月七日:人日 人胜节

正月八日:谷日 八仙日

正月九日:天日 九皇会

正月十日:地日 石头生日

正月十二日:火日 老鼠娶媳妇日

正月十三日:上(试)灯日 关公升天日

正月十五日:元宵节 上元节

正月十八日:落灯日

二月一日:中和节 太阳生日

二月二日:龙抬头

二月十二日:花朝节

二月十九日:观世音圣诞

三月三日:上巳节

四月一日:祭雹神

四月四日:文殊菩萨诞辰

四月八日:佛诞节

五月五日:端午节 端阳节

六月六日:晒衣节 姑姑节

六月二十四日:彝族火把节

七月七日:七夕

七月十四日:鬼节(南方)

七月十五日:中元节 盂兰盆节

七月三十日:地藏节

八月十五日:中秋节

九月九日:重阳节

十月一日:祭祖节

十月十五日:下元节

十一月十七日:阿弥陀佛圣诞

腊月八日:腊八节

腊月十六日:尾牙

腊月二十三日:小年

腊月三十日:除夕

方法:

1. getFestivals(参数):获取节日列表,参数为农历时间.参数选择:

a. int年,int月,int日

b. int月,int日


LunarInfo

1. yearDays(int年):传回农历年的总天数

2. leapDays(int年):传回农历年的闰月的天数

3. monthDays(int年,int月):返回指定月的天数

4. leapMonth(int年):返回闰月的月份


SolarTerms

24节气:小寒,大寒,立春,雨水,惊蛰,春分,清明,谷雨,立夏,小满,芒种,夏至,小暑,大暑,立秋,处暑,白露,秋分,寒露,霜降,立冬,小雪,大雪,冬至。

方法:

1. getTerm(参数):获取节气.参数选择:

a. int年,int第几个节气.返回该节气的日期

b. Date.返回节气

c. ChineseDate.返回节气

d. LocalDate.返回节气

e. int年,int月,int日.返回节气


ChineseDate-农历

构造参数:

1. Date

2. LocalDate

3. int农历年,int农历月,int农历日

4. int农历年,int农历月,int农历日,boolean是否是闰月

参数:

1. getChineseYear():获取农历年

2. getGregorianYear():获取公历年

3. getMonth():获取农历月

4. getGregorianMonthBase1():获取公历月,从1开始

5. getGregorianMonth():获取公历月,从0开始

6. isLeapMonth():获取当前农历月是否是闰月

7. getChineseMonth(boolean是否传统表示):获取农历月份.是否传统表示:可选.

8. getChineseMonthName():获取农历月名称

9. getDay():获取农历日

10. getGregorianDay():获取公历日

11. getChineseDay():获取农历日

12. getGregorianDate():获取公历Date

13. getGregorianCalendar():获取公历Calendar

14. getFestivals():获取节日

15. getChineseZodiac():获取年份生肖

16. getCyclical():获取年的天干地支

17. getCyclicalYMD():获取年月日的天干地支

18. getTerm():获取节气

19. toStringNormal():获取日期字符串

20. toString():获取字符串