一、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():获取字符串