{"id":127086,"date":"2020-05-30T22:26:48","date_gmt":"2020-05-30T14:26:48","guid":{"rendered":"http:\/\/4563.org\/?p=127086"},"modified":"2020-05-30T22:26:48","modified_gmt":"2020-05-30T14:26:48","slug":"xk-time-java-%e6%97%b6%e9%97%b4%e5%b7%a5%e5%85%b7%e5%8c%85%e3%80%82%e6%97%b6%e9%97%b4%e8%bd%ac%e6%8d%a2%ef%bc%8c%e8%ae%a1%e7%ae%97%ef%bc%8c%e6%a0%bc%e5%bc%8f%e5%8c%96%ef%bc%8c%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=127086","title":{"rendered":"xk-time Java \u65f6\u95f4\u5de5\u5177\u5305\u3002\u65f6\u95f4\u8f6c\u6362\uff0c\u8ba1\u7b97\uff0c\u683c\u5f0f\u5316\uff0c\u89e3\u6790\uff0c\u65e5\u5386\u548c cron \u8868\u8fbe\u5f0f\u7b49\u7684\u5de5\u5177\uff0c\u4f7f\u7528 java8\uff0c\u7ebf\u7a0b\u5b89\u5168\uff0c\u7b80\u5355\u6613\u7528\uff0c\u591a\u8fbe 60 \u51e0\u79cd\u5e38\u7528\u65e5\u671f\u683c\u5f0f\u5316\u6a21\u677f\u3002"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  xk-time Java \u65f6\u95f4\u5de5\u5177\u5305\u3002\u65f6\u95f4\u8f6c\u6362\uff0c\u8ba1\u7b97\uff0c\u683c\u5f0f\u5316\uff0c\u89e3\u6790\uff0c\u65e5\u5386\u548c cron \u8868\u8fbe\u5f0f\u7b49\u7684\u5de5\u5177\uff0c\u4f7f\u7528 java8\uff0c\u7ebf\u7a0b\u5b89\u5168\uff0c\u7b80\u5355\u6613\u7528\uff0c\u591a\u8fbe 60 \u51e0\u79cd\u5e38\u7528\u65e5\u671f\u683c\u5f0f\u5316\u6a21\u677f\u3002               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : xkzhangsan <\/span>  <span><i><\/i> 11<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\"> <\/p>\n<p>https:\/\/github.com\/xkzhangsan\/xk-time<\/p>\n<p>xk-time is a datetime converter calculator formatter calendar and cron expression tool set, based on java8 date and time API, thread safe, easy to use.<\/p>\n<p>\u65f6\u95f4\u8f6c\u6362\uff0c\u8ba1\u7b97\uff0c\u683c\u5f0f\u5316\uff0c\u89e3\u6790\uff0c\u65e5\u5386\u548c cron \u8868\u8fbe\u5f0f\u7b49\u7684\u5de5\u5177\uff0c\u4f7f\u7528 java8\uff0c\u7ebf\u7a0b\u5b89\u5168\uff0c\u7b80\u5355\u6613\u7528\uff0c\u591a\u8fbe 60 \u51e0\u79cd\u5e38\u7528\u65e5\u671f\u683c\u5f0f\u5316\u6a21\u677f\u3002<\/p>\n<h2>0.\u4e3a\u4ec0\u4e48\u8981\u5f00\u53d1\u8fd9\u4e2a\u5de5\u5177\uff1f<\/h2>\n<h3>\uff08 1 \uff09 java8 \u4ee5\u524d\u7684 Date API \u8bbe\u8ba1\u4e0d\u592a\u597d\uff0c\u4f7f\u7528\u4e0d\u65b9\u4fbf\uff0c\u5f80\u5f80\u4f1a\u6709\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\u3002<\/h3>\n<p>xk-time \u5de5\u5177\u5305\uff0c\u4f7f\u7528 java8 api\uff0c\u5176\u4e2d Instant \u3001LocalDate \u3001LocalDateTime \u3001LocalTime \u3001ZonedDateTime \u7b49\u90fd\u662f\u7ebf\u7a0b\u5b89\u5168\u7684\u7c7b\uff0c\u800c\u4e14\u589e\u52a0\u4e86\u66f4\u4e30\u5bcc\u7684\u65b9\u6cd5\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\u5f00\u53d1\u76f8\u5173\u5de5\u5177\u7c7b\uff0c\u7ebf\u7a0b\u5b89\u5168\uff0c\u8ba9\u4f7f\u7528\u66f4\u65b9\u4fbf\u3002<\/p>\n<h3>\uff08 2 \uff09\u5e38\u89c1\u7684 DateUtil\uff0c\u5f80\u5f80\u5c06\u65f6\u95f4\u8f6c\u6362\uff0c\u8ba1\u7b97\uff0c\u683c\u5f0f\u5316\uff0c\u89e3\u6790\u7b49\u529f\u80fd\u90fd\u653e\u5728\u540c\u4e00\u4e2a\u7c7b\u4e2d\uff0c\u5bfc\u81f4\u7c7b\u529f\u80fd\u590d\u6742\uff0c\u65b9\u6cd5\u592a\u591a\uff0c\u67e5\u627e\u4e0d\u65b9\u4fbf\u3002<\/h3>\n<p>xk-time \u5de5\u5177\u5305\uff0c\u5c06\u4e0a\u9762\u529f\u80fd\u6309\u7167\u65f6\u95f4\u8f6c\u6362\uff0c\u65f6\u95f4\u8ba1\u7b97\uff0c\u65f6\u95f4\u683c\u5f0f\u5316\u89e3\u6790\u5206\u6210 3 \u4e2a\u5de5\u5177\u7c7b\uff1aDateTimeConverterUtil\uff0cDateTimeCalculatorUtil\uff0cDateTimeFormatterUtil\uff0c\u6bcf\u4e2a\u7c7b\u53ea\u505a\u4e00\u4e2a\u79cd\u529f\u80fd\uff0c\u65b9\u4fbf\u4f7f\u7528\u3002<\/p>\n<h3>\uff08 3 \uff09\u4e3a\u4e86\u5c06\u4e0e\u65f6\u95f4\u7d27\u5bc6\u76f8\u5173\u7684\u8282\u5047\u65e5\u3001\u519c\u5386\u3001\u4e8c\u5341\u56db\u8282\u6c14\u3001\u5341\u4e8c\u661f\u5ea7\u548c\u65e5\u5386\u7b49\u529f\u80fd\u96c6\u4e2d\u8d77\u6765\u5f00\u53d1\u6210\u5de5\u5177\uff0c\u65b9\u4fbf\u4f7f\u7528\u3002<\/h3>\n<h2>1.Maven \u5750\u6807<\/h2>\n<pre><code>&lt;dependency&gt;     &lt;groupId&gt;com.github.xkzhangsan&lt;\/groupId&gt;       &lt;artifactId&gt;xk-time&lt;\/artifactId&gt;          &lt;version&gt;1.1.1&lt;\/version&gt;     &lt;\/dependency&gt;     <\/code><\/pre>\n<h2>2.\u65e5\u671f\u8f6c\u6362\u5de5\u5177\u7c7b DateTimeConverterUtil<\/h2>\n<p>\u5305\u542b Date \u3001LocalDate \u3001LocalDateTime \u3001LocalTime \u3001Instant \u3001ZonedDateTime \u3001YearMonth \u548c Timestamp \u7684\u4e92\u76f8\u8f6c\u6362<br \/> \u6ce8\u610f\uff0cZonedDateTime \u76f8\u5173\u7684\u8f6c\u6362\uff0c\u5c24\u5176\u662f\u5176\u4ed6\u65f6\u95f4\u8f6c ZonedDateTime\uff0c\u8981\u6ce8\u610f\u65f6\u95f4\u548c\u5bf9\u5e94\u65f6\u533a\u4e00\u81f4\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>3.\u65e5\u671f\u8ba1\u7b97\u5de5\u5177\u7c7b DateTimeCalculatorUtil<\/h2>\n<p>\u5305\u62ec\uff1a<br \/> \uff08 1 \uff09\u83b7\u53d6\u65f6\u95f4\u5c5e\u6027\u65b9\u6cd5\uff0cget* \u6bd4\u5982 getYear(Date date) \u83b7\u53d6\u5e74\u90e8\u5206\uff0cgetMonthCnLong(Date date)\u83b7\u53d6\u6708\u4efd\u4e2d\u6587\uff0cgetDayOfWeekCn(Date date)\uff0c\u83b7\u53d6\u661f\u671f\u4e2d\u6587\u3002<br \/> \uff08 2 \uff09\u83b7\u53d6\u65f6\u95f4\u52a0\u64cd\u4f5c\u65b9\u6cd5\uff0cplus* \u6bd4\u5982 plusYears(Date date, long amountToAdd) \u5f53\u524d\u65f6\u95f4\u5e74\u589e\u52a0 amountToAdd \u503c\u3002<br \/> \uff08 3 \uff09\u83b7\u53d6\u65f6\u95f4\u51cf\u64cd\u4f5c\u65b9\u6cd5\uff0cminus* \u6bd4\u5982 minusYears(Date date, long amountToSubtract) \u5f53\u524d\u65f6\u95f4\u5e74\u51cf\u5c11 amountToSubtract \u503c\u3002<br \/> \uff08 4 \uff09\u83b7\u53d6\u65f6\u95f4\u4fee\u6539\u5c5e\u6027\u65b9\u6cd5\uff0cwith* \u6bd4\u5982 withYear(Date date, long newValue) \u4fee\u6539\u5f53\u524d\u65f6\u95f4\u5e74\u503c\u4e3a newValue \u3002<br \/> \uff08 5 \uff09\u83b7\u53d6\u6bd4\u8f83 2 \u4e2a\u65f6\u95f4\u65b9\u6cd5\uff0cbetween* \u6bd4\u5982 betweenYears(Date startInclusive, Date endExclusive) \u6bd4\u8f83 2 \u4e2a\u65f6\u95f4\uff0c\u83b7\u53d6\u5e74\u90e8\u5206\u3002<br \/> \uff08 6 \uff09\u5176\u4ed6\u5e38\u7528\u65b9\u6cd5\uff0c\u6bd4\u5982 isLeapYear(Date date) \u5224\u65ad\u662f\u5426\u95f0\u5e74\uff0cisWeekend(Date date) \u5224\u65ad\u662f\u5426\u5468\u672b\uff0cisExpiry(String yearMonthStr) \u662f\u5426\u8fc7\u671f\u7b49<br \/> \uff08 7 \uff09\u65f6\u533a\u8f6c\u6362\u8ba1\u7b97\u65b9\u6cd5\uff0ctransform*\uff0c\u6bd4\u5982 transform(ZonedDateTime zonedDateTime, String zoneId)<br \/> \uff08 8 \uff09\u6bd4\u8f83 2 \u4e2a\u65f6\u95f4\u5927\u5c0f\u548c\u76f8\u7b49\u65b9\u6cd5\uff0ccompare*\uff0c\u6bd4\u5982 compare(Date date1, Date date2)<br \/> \uff08 9 \uff09\u83b7\u53d6\u51c6\u786e\u7684\u8d77\u59cb\u65f6\u95f4\u65b9\u6cd5\uff0cstart*,end*\uff0c\u6bd4\u5982 startTimeOfMonth() \u5f53\u6708\u8d77\u59cb\u65f6\u95f4 \u5f53\u6708\u7b2c\u4e00\u5929\u65e5\u671f+00:00:00\uff0cendTimeOfMonth() \u5f53\u6708\u6700\u540e\u4e00\u5929\u65e5\u671f+23:59:59 \u3002<br \/> \uff08 10 \uff09\u76f8\u540c\u6708\u65e5\u6bd4\u8f83\u5224\u65ad\u65b9\u6cd5\uff0cisSameMonthDay*\uff0cbetweenNextSameMonthDay*\uff0cnextSameMonthDay*\uff0c \u6bd4\u5982\u7528\u4e8e\u751f\u65e5\uff0c\u8282\u65e5\u7b49\u5468\u671f\u6027\u7684\u65e5\u671f\u6bd4\u8f83\u5224\u65ad\u3002<br \/> \uff08 11 \uff09\u661f\u5ea7\u8ba1\u7b97\u65b9\u6cd5\uff0cgetConstellation*\uff0c\u6bd4\u5982 getConstellationNameCn(String monthDayStr)\uff0c\u6839\u636e\u65e5\u671f\u8ba1\u7b97\u661f\u5ea7\u3002<br \/> \uff08 12 \uff09\u8ba1\u7b97\u6307\u5b9a\u5e74\u6708\u6216\u8d77\u59cb\u65f6\u95f4\u533a\u95f4\u7684\u65f6\u95f4\u5217\u8868\uff0cget<em>List\uff0c \u6bd4\u5982 getDateList(int year, int month)\uff0c\u8ba1\u7b97\u6307\u5b9a\u5e74\u6708\u7684\u65f6\u95f4\u5217\u8868\u3002<br \/> \uff08 13 \uff09\u51cf\u5c11\u65f6\u95f4\u7cbe\u5ea6\u65b9\u6cd5\uff0creduceAccuracyTo<\/em>\uff0c \u6bd4\u5982 reduceAccuracyToDay(Date date)\uff0c\u51cf\u5c11\u65f6\u95f4\u7cbe\u5ea6\u5230\u5929\uff0c\u5176\u4ed6\u8865 0\uff0c\u8fd4\u56de\u5982\uff0c2020-04-23 00:00:00 \u3002<br \/> \uff08 14 \uff09\u83b7\u53d6\u65f6\u95f4\u6233\u65b9\u6cd5\uff0cgetEpoch*\uff0c \u6bd4\u5982 getEpochMilli()\u83b7\u53d6\u65f6\u95f4\u6233\uff0cgetEpochMilliFormat()\u83b7\u53d6\u65f6\u95f4\u6233\u683c\u5f0f\u5316\u5b57\u7b26\u4e32\uff08 yyyy-MM-dd HH:mm:ss \uff09<br \/> \uff08 15 \uff09\u8ba1\u7b97\u5e74\u9f84\u65b9\u6cd5\uff0cgetAge*\uff0c \u6bd4\u5982 getAge(Date birthDay)\uff0c\u901a\u8fc7\u751f\u65e5\u8ba1\u7b97\u5e74\u9f84\u3002<br \/> \uff08 16 \uff09\u5224\u65ad\u662f\u5426\u5230\u751f\u65e5\u65b9\u6cd5\uff0cisBirthDay*\uff0c \u6bd4\u5982 isBirthDay(Date birthDay)\uff0c\u6839\u636e\u751f\u65e5\u5224\u65ad\u5f53\u524d\u65e5\u671f\u662f\u5426\u5230\u751f\u65e5\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>4.\u65e5\u671f\u683c\u5f0f\u5316\u548c\u89e3\u6790\u5de5\u5177\u7c7b DateTimeFormatterUtil<\/h2>\n<p>\u5305\u542b\u5e38\u7528\u65e5\u671f\u683c\u5f0f\u5982\uff1a<br \/> yyyy-MM-dd<br \/> HH:mm:ss<br \/> yyyy-MM-dd HH:mm:ss<br \/> yyyy-MM-dd&#8217;T&#8217;HH:mm:ssZ \u7b49\u7b49<\/p>\n<p>\uff08 1 \uff09\u683c\u5f0f\u5316\u65b9\u6cd5\uff0cformat*\uff0c \u6bd4\u5982 formatToDateStr(Date date) \u683c\u5f0f\u5316\uff0c\u8fd4\u56de\u65e5\u671f\u90e8\u5206\uff0c\u5982\uff1ayyyy-MM-dd \uff1b<br \/> format(Date date, DateTimeFormatter formatter) formatter \u53ef\u4ee5\u9009\u62e9\u5df2\u5b9a\u4e49\u597d\u7684 formatter \u6bd4\u5982 YYYY_MM_DD_HH_MM_SS_FMT \uff08 yyyy-MM-dd HH:mm:ss \uff09\u683c\u5f0f\u5316\u65e5\u671f\u3002<\/p>\n<p>\uff08 2 \uff09\u89e3\u6790\u65b9\u6cd5\uff0cparse*\uff0c \u6bd4\u5982 parseDateStrToDate(String text) \u89e3\u6790\u65e5\u671f yyyy-MM-dd\uff0c\u8fd4\u56de Date \uff1b<br \/> parseToDate(String text, DateTimeFormatter formatter) \u6839\u636e formatter \u89e3\u6790\u4e3a Date \u3002<\/p>\n<p>\uff08 3 \uff09\u81ea\u52a8\u89e3\u6790\u65b9\u6cd5\uff0c\u6839\u636e\u5b57\u7b26\u4e32\u7279\u70b9\u81ea\u52a8\u8bc6\u522b\u89e3\u6790\uff0csmartParse*\uff0c\u6bd4\u5982 smartParseToDate(String text) \u81ea\u52a8\u89e3\u6790 Date \u3002<\/p>\n<p>\uff08 4 \uff09 ISO \u683c\u5f0f\uff08\u5305\u542b T \uff09\u81ea\u52a8\u89e3\u6790\u65b9\u6cd5\uff0c\u6839\u636e\u5b57\u7b26\u4e32\u7279\u70b9\u81ea\u52a8\u8bc6\u522b\u89e3\u6790\uff0cparseIso*\uff0c\u6bd4\u5982 parseIsoToDate(String text) \u81ea\u52a8\u89e3\u6790 Date \u3002<\/p>\n<p>\uff08 5 \uff09\u89e3\u6790\u65f6\u95f4\u6233\u65b9\u6cd5, parseEpochMilli*\uff0c \u6bd4\u5982 parseEpochMilliToDate(String text)\uff0c\u89e3\u6790\u65f6\u95f4\u6233\u4e3a Date\uff0c\u5982 1590224790000 \u3002<\/p>\n<p>\uff08 6 \uff09\u89e3\u6790 Date \u9ed8\u8ba4\u683c\u5f0f\uff0cparseDateDefaultStr*\uff0c\u6bd4\u5982 parseDateDefaultStrToDate(String text)<br \/> \u89e3\u6790 EEE MMM dd HH:mm:ss zzz yyyy \u6bd4\u5982\uff1a Sat May 23 17:06:30 CST 2020 \u4e3a Date \u3002<\/p>\n<p>\uff08 7 \uff09\u81ea\u5b9a\u4e49\u65f6\u533a\u683c\u5f0f\u5316\u65b9\u6cd5\uff0c\u6bd4\u5982 format(Date date, DateTimeFormatter formatter, String zoneId)\uff0c\u6839\u636e zoneId \u683c\u5f0f\u5316 Date \u3002<\/p>\n<p>\u6ce8\u610f\uff1a\u683c\u5f0f\u5316\u548c\u89e3\u6790\u4e0e\u7cfb\u7edf\u65f6\u533a\u4e0d\u540c\u7684\u65f6\u95f4\u65f6\uff0c\u4f7f\u7528\u81ea\u5b9a\u4e49\u65f6\u533a\u683c\u5f0f\u5316\u65b9\u6cd5\uff0c\u6216\u53ef\u4ee5\u4f7f\u7528 withZone \u65b9\u6cd5\u91cd\u65b0\u8bbe\u7f6e\u65f6\u533a\uff0c\u6bd4\u5982\uff1a<br \/> YYYY_MM_DD_HH_MM_SS_SSS_FMT.withZone(ZoneId.of(&#8220;Europe\/Paris&#8221;) \u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>5.\u65e5\u5386\u5de5\u5177\u7c7b CalendarUtil<\/h2>\n<p>\u5305\u62ec\uff1a<br \/> \uff08 1 \uff09\u751f\u6210\u6307\u5b9a\u65f6\u95f4\u7684\u65e5\u5386\uff08\u5305\u542b\u5e74\u3001\u6708\u548c\u65e5\u5c42\u7ea7\u5173\u7cfb\u7684\u65e5\u5386\uff09\u65b9\u6cd5\uff0cgenerateCalendar* \u6bd4\u5982 generateCalendar(int year, int month) \u751f\u6210\u6307\u5b9a\u5e74\u6708\u7684\u65e5\u5386\u3002<br \/> \uff08 2 \uff09\u751f\u6210\u6307\u5b9a\u65f6\u95f4\u7684\u65e5\u5386\uff08\u5305\u542b\u5e74\u3001\u6708\u548c\u65e5\u5c42\u7ea7\u5173\u7cfb\u7684\u65e5\u5386\uff09\uff0c\u5305\u542b\u519c\u5386\u548c\u6240\u6709\u8282\u5047\u65e5\u4fe1\u606f\u65b9\u6cd5\uff0cgenerateCalendarWithHoliday*\uff0c \u6bd4 generateCalendarWithHoliday(int year, int month, Map&lt;String, String&gt; localHolidayMap,Map&lt;String, String&gt; chineseHolidayMap, Map&lt;String, Integer&gt; dateTypeMap)\u751f\u6210\u6307\u5b9a\u5e74\u6708\u7684\u65e5\u5386\uff0c\u5305\u542b\u519c\u5386\u548c\u6240\u6709\u8282\u5047\u65e5\u4fe1\u606f\uff0c\u53ef\u4ee5\u81ea\u5b9a\u4e49\u8282\u5047\u65e5\u548c\u5de5\u4f5c\u65e5\u7b49\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>6.\u519c\u5386\u65e5\u671f\u7c7b LunarDate<\/h2>\n<p>\u5305\u542b\uff1a<br \/> \uff08 1 \uff09\u519c\u5386\u65e5\u671f\u5e74\u6708\u65e5\u8ba1\u7b97\u3002<br \/> \uff08 2 \uff09\u519c\u5386\u5c81\u6b21\uff0c\u751f\u8096\u5c5e\u76f8\u8ba1\u7b97\u3002<br \/> \uff08 3 \uff09\u4e8c\u5341\u56db\u8282\u6c14\u8ba1\u7b97\u7b49<br \/> \u6ce8\u610f\uff1a \u4ec5\u652f\u6301\u516c\u5386 1901-2050 \u5e74\u7684\u519c\u5386\u8f6c\u6362\u3002<br \/> \u519c\u5386\u548c\u4e8c\u5341\u56db\u8282\u6c14\u8ba1\u7b97\u7684\u51c6\u786e\u4f9d\u8d56\u4e8e lunarInfo \u548c solarTermInfo \u57fa\u7840\u6570\u636e\u7684\u51c6\u786e\u6027\u548c\u7cbe\u786e\u5ea6\u3002<br \/> \u6839\u636e\u6d4b\u8bd5\u7ed3\u679c\uff0c\u53d1\u73b0\u672c\u7a0b\u5e8f\u548c\u5e38\u7528\u4e07\u5e74\u5386\u57fa\u672c\u4e00\u81f4\uff0c\u5e38\u7528\u4e07\u5e74\u5386\u8f6f\u4ef6\u4e2d\u4e5f\u6709\u5f88\u5c11\u91cf\u8ba1\u7b97\u8bef\u5dee\uff0c\u6b22\u8fce\u63d0\u51fa\u95ee\u9898\uff0c\u4f1a\u4e0d\u65ad\u8fdb\u884c\u6539\u8fdb\u548c\u4fee\u6b63\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>7.\u8282\u5047\u65e5\u8ba1\u7b97\u7c7b Holiday<\/h2>\n<p>\u5305\u542b\uff1a<br \/> \uff08 1 \uff09\u516c\u5386\u8282\u5047\u65e5\u8ba1\u7b97\uff0cgetLocalHoliday* \u6bd4\u5982 getLocalHoliday(Date date) \u8ba1\u7b97 date \u7684\u516c\u5386\u8282\u65e5\uff0cgetLocalHoliday(Date date, Map&lt;String, String&gt; localHolidayMap) \u53ef\u4ee5\u4f20\u5165\u81ea\u5b9a\u4e49\u516c\u5386\u8282\u65e5\u6570\u636e\u3002<br \/> \uff08 2 \uff09\u519c\u5386\u8282\u5047\u65e5\u8ba1\u7b97\uff0cgetChineseHoliday* \u6bd4\u5982 getChineseHoliday(Date date) \u8ba1\u7b97 date \u7684\u519c\u5386\u8282\u65e5\uff0cgetChineseHoliday(Date date, Map&lt;String, String&gt; chineseHolidayMap) \u53ef\u4ee5\u4f20\u5165\u81ea\u5b9a\u4e49\u519c\u5386\u8282\u65e5\u6570\u636e\u3002<br \/> \uff08 3 \uff09\u4e8c\u5341\u56db\u8282\u6c14\u8ba1\u7b97\uff0cgetSolarTerm* \u6bd4\u5982 getSolarTerm(Date date) \u8ba1\u7b97 date \u7684\u4e8c\u5341\u56db\u8282\u6c14\u3002<\/p>\n<p>\u6ce8\u610f\uff1a \u519c\u5386\u548c\u4e8c\u5341\u56db\u8282\u6c14\u4f7f\u7528\u519c\u5386\u65e5\u671f\u7c7b LunarDate\uff0c\u4ec5\u652f\u6301\u516c\u5386 1901-2050 \u5e74\u7684\u8ba1\u7b97\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h2>8.Cron \u8868\u8fbe\u5f0f\u5de5\u5177\u7c7b CronExpressionUtil<\/h2>\n<p>cron \u8868\u8fbe\u5f0f\u4ece\u5de6\u5230\u53f3\uff08\u7528\u7a7a\u683c\u9694\u5f00\uff09\uff1a\u79d2\uff08 0-59 \uff09 \u5206\uff08 0-59 \uff09 \u5c0f\u65f6\uff08 0-23 \uff09 \u65e5\u671f\uff08 1-31 \uff09 \u6708\u4efd\uff08 1-12 \u7684\u6574\u6570\u6216\u8005 JAN-DEC \uff09 \u661f\u671f\uff08 1-7 \u7684\u6574\u6570\u6216\u8005 SUN-SAT \uff08 1=SUN \uff09\uff09 \u5e74\u4efd\uff08\u53ef\u9009\uff0c1970-2099 \uff09<br \/> \u6240\u6709\u5b57\u6bb5\u5747\u53ef\u4f7f\u7528\u7279\u6b8a\u5b57\u7b26\uff1a, &#8211; * \/ \u5206\u522b\u662f\u679a\u4e3e\uff0c\u8303\u56f4\uff0c\u4efb\u610f\uff0c\u95f4\u9694<br \/> \u65e5\u671f\u53e6\u5916\u53ef\u4f7f\u7528\uff1a? L W \u5206\u522b\u662f\u4efb\u610f\uff0c\u6700\u540e\uff0c\u6709\u6548\u5de5\u4f5c\u65e5(\u5468\u4e00\u5230\u5468\u4e94)<br \/> \u661f\u671f\u53e6\u5916\u53ef\u4f7f\u7528\uff1a? L # \u5206\u522b\u662f\u4efb\u610f\uff0c\u6700\u540e\uff0c\u6bcf\u4e2a\u6708\u7b2c\u51e0\u4e2a\u661f\u671f\u51e0<br \/> \u5e38\u7528 cron \u8868\u8fbe\u5f0f\uff1a<br \/> \uff08 1 \uff09 0 0 2 1 * ? * \u8868\u793a\u5728\u6bcf\u6708\u7684 1 \u65e5\u7684\u51cc\u6668 2 \u70b9\u89e6\u53d1<br \/> \uff08 2 \uff09 0 15 10 ? * MON-FRI \u8868\u793a\u5468\u4e00\u5230\u5468\u4e94\u6bcf\u5929\u4e0a\u5348 10:15 \u6267\u884c\u4f5c\u4e1a<br \/> \uff08 3 \uff09 0 15 10 ? * 6L 2002-2006 \u8868\u793a 2002-2006 \u5e74\u7684\u6bcf\u4e2a\u6708\u7684\u6700\u540e\u4e00\u4e2a\u661f\u671f\u4e94\u4e0a\u5348 10:15 \u6267\u884c\u4f5c<br \/> \uff08 4 \uff09 0 0\/30 9-17 * * ? \u671d\u4e5d\u665a\u4e94\u5de5\u4f5c\u65f6\u95f4\u5185\u6bcf\u534a\u5c0f\u65f6<br \/> \uff08 5 \uff09 0 15 10 L * ? \u6bcf\u6708\u6700\u540e\u4e00\u65e5\u7684\u4e0a\u5348 10:15 \u89e6\u53d1<br \/> \uff08 6 \uff09 0 15 10 ? * 6#3 \u6bcf\u6708\u7684\u7b2c\u4e09\u4e2a\u661f\u671f\u4e94\u4e0a\u5348 10:15 \u89e6\u53d1<\/p>\n<p>\u5305\u542b<br \/> \uff08 1 \uff09\u9a8c\u8bc1\u548c\u683c\u5f0f\u5316 Cron \u8868\u8fbe\u5f0f\u65b9\u6cd5\uff0cisValidExpression \u548c formatExpression \u3002<br \/> \uff08 2 \uff09\u751f\u6210\u4e0b\u4e00\u4e2a\u6216\u591a\u4e2a\u6267\u884c\u65f6\u95f4\u65b9\u6cd5\uff0cgetNextTime \u548c getNextTimeList \u3002<br \/> \uff08 3 \uff09\u751f\u6210\u4e0b\u4e00\u4e2a\u6216\u591a\u4e2a\u6267\u884c\u65f6\u95f4\u7684\u65e5\u671f\u683c\u5f0f\u5316\uff08 yyyy-MM-dd HH:mm:ss \uff09\u65b9\u6cd5\uff0cgetNextTimeStr \u548c getNextTimeStrList \u3002<br \/> \uff08 4 \uff09\u5bf9\u6bd4 Cron \u8868\u8fbe\u5f0f\u4e0b\u4e00\u4e2a\u6267\u884c\u65f6\u95f4\u662f\u5426\u4e0e\u6307\u5b9a date \u76f8\u7b49\u65b9\u6cd5\uff0cisSatisfiedBy \u3002<\/p>\n<p>\u6ce8\u610f\uff1a \u5e95\u5c42\u4f7f\u7528 quartz \u7684 CronExpression \u5904\u7406\u3002<\/p>\n<p>\u8be6\u7ec6\u4f7f\u7528\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u6d4b\u8bd5\u4ee3\u7801\u3002<\/p>\n<h1>\u6b22\u8fce\u4f7f\u7528\u548c\u63d0\u5efa\u8bae!<\/h1>\n<p> <\/p>\n<p>https:\/\/github.com\/xkzhangsan\/xk-time<\/p>\n<\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>5<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"2059713\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : xkzhangsan <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u5f00\u53d1\u8fd9\u4e2a\u5de5\u5177\uff0c\u4ece\u6709\u60f3\u6cd5\u5230\u73b0\u5728\u5df2\u7ecf\u534a\u5e74\u591a\u65f6\u95f4\uff0c\u53d1\u5e03\u8fc7 10 \u4e2a\u4ee5\u4e0a\u7248\u672c\uff0c\u4e0d\u65ad\u8fed\u4ee3\uff0c\u589e\u52a0\u65b0\u7684\u529f\u80fd\u3002<\/p>\n<p>\u4f1a\u6301\u7eed\u7ef4\u62a4\uff0c\u6b22\u8fce\u4f7f\u7528\u548c\u63d0\u5efa\u8bae\uff01                                                            <\/p><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"2059714\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : nl101531 <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u8eab\u5904\u56fd\u9645\u4e1a\u52a1\uff0c\u8e29\u8fc7\u4e0d\u5c11\u5751\uff0c\u65f6\u95f4\u6211\u89c9\u5f97\u6700\u590d\u6742\u7684\u662f\u65f6\u533a\u95ee\u9898\u3002\u3002\u3002                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"2059715\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : xkzhangsan <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @nl101531 \u5bf9\u7684\uff0c\u65f6\u533a\u5904\u7406\u6bd4\u8f83\u9ebb\u70e6\uff0cJava8 \u53ef\u4ee5\u4f7f\u7528 ZonedDateTime \u975e\u5e38\u65b9\u4fbf\u3002<br \/>\u683c\u5f0f\u5316\u548c\u89e3\u6790\u4e5f\u6709\u5f88\u597d\u7684\u652f\u6301\uff0c\u6bd4\u5982 java.time.format.DateTimeFormatter.ISO_DATE_TIME \u3002<\/p>\n<p>xk-time \u91cc\u9762\u6709\u5305\u542b\u65f6\u533a\u8f6c\u6362\uff0c\u683c\u5f0f\u5316\u89e3\u6790\u591a\u79cd\u529f\u80fd\uff0c\u5e0c\u671b\u6709\u6240\u5e2e\u52a9\u3002                                                            <\/p><\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"2059716\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : doudouwu <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u611f\u89c9\u4e0d\u9519\uff0c\u4e4b\u524d\u4e00\u76f4\u7528 hutool\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4f7f\u7528\u8fd9\u4e2a\u770b\u770b                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"2059717\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u4e3b<\/span> <span>\u8cc7\u6df1\u5927\u4f6c : xkzhangsan <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             @doudouwu \u611f\u8c22\u652f\u6301\uff01                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>xk-time Java \u65f6\u95f4\u5de5\u5177&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/127086"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=127086"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/127086\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=127086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=127086"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=127086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}