XK-Timeは、時間変換、時間の計算、時間のフォーマット、時間の解析、カレンダー、時間CRON式、および時間NLPなどのツールです。Java8、スレッドセーフ、使いやすいテンプレート、および70を超える一般的な日付フォーマットテンプレートを使用し、Java8時間のクラスと日付、軽量、サードパーティの依存をサポートします。
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4</version>
</dependency>
Mini版本不包含 time nlp 功能,更简洁。
<dependency>
<groupId>com.github.xkzhangsan</groupId>
<artifactId>xk-time</artifactId>
<version>3.2.4.Mini</version>
</dependency>
compile group: 'com.github.xkzhangsan', name: 'xk-time', version: '3.2.4'
XK-Time ToolkitはJava8 APIを使用しています。その中には、LocalDate、LocalDateTime、LocalTime、ZonedDateTimeなどがすべてスレッドセーフクラスであり、より豊富な方法が追加されています。これに基づいて、関連するツールクラスが開発され、よりスレッドセーフになり、使用がより便利になります。
XK-TIMEKIT、上記の関数は、時間変換、時間の計算、および時間のフォーマットと分析に応じて3つのツールクラスに分割されます:DateTimeConverterutil、DateTimecalculaturutil、およびDateTimeFormatterutil。各クラスには、使いやすい機能が1つしかありません。
2.4.1 Joda-TimeおよびJava8 Timeパッケージの実装は基本的に同じであり、どちらもStephen Colebourneが支配しています。 Java8から始めて、Java8 Timeパッケージを使用してJoda-Timeを置き換えることをお勧めします。
2.4.2 XK-TimeはJava 8 Date APIに基づいており、前のDateutilと同様の補足ツールです。
(1)Java8クラスライブラリは階層レベルで垂直に実装され、XK-Timeは、変換、計算、フォーマット、分析などの一般的な機能に従って3つのクラスに分割されます。
(2)Java8日付は新しいクラスに変換され、APIドキュメントを表示する必要があり、XK-Timeは内部的に変換されるため、その日はJava8の新機能を直接使用できます。
(3)XK-Timeの再インプレクトJava 8 APIに従って一般的に使用されるdateutilの関数を再特定すると同時に、より便利に使用するためにいくつかの拡張機能が作成されます。
含む:
(1)日付、LocalDate、LocalDateTime、LocalTime、Instant、ZonedDateTime、YearMonth、Timestamp、Timestamp、およびTuperalAccesserが互いに変換されます。
(2)日数、時間、分、秒、ミリ秒などの時間単位が互いに変換され、小さなユニットの大規模なユニットへの正確な変換がサポートされます。たとえば、minutetohourprecise(long num)90分から1.5時間です。
(3)ZonedDateTimeを変換しながら、指定されたタイムゾーンへの変換をサポートしながら、TozonedDateTime(日付、String ZoneID)やTozonedDateTimeandTransformzone(LocalDateTime LocalDateTime、String TargetZoneid)など。
ZonedDateTime関連の変換、特に他の時間ZonedDateTimeへの変換の場合、時間と対応するタイムゾーンの一貫性に注意する必要があることに注意してください。
詳細な使用のために、関連するテストコード:DateTimeConverterUtiltESTを表示できます。
含む:
(1)時間属性メソッド(月、時間、分、週、週、タイムスタンプなどをサポートします)、たとえば、GetYear(日付)を取得する(日付)Get Year Part、GetMonthCnlong(日付)は中国語、GetDayOfWeekCn(日付)、Get Week high dishenを取得します。
(2)Time Plus操作方法を取得し、たとえば*プラスイヤー(日付、長い量の量)を取得します。
(3)時間を取得します。たとえば、Minusyears(日付、長い量の額)を取得します。
(4)たとえば、withyear(日付、長いnewvalue)を使用して、時間変更属性メソッドを取得して、現在の時間と年の値をnewValueに変更します。
(5)たとえば、betweentotaldays(日付開始、日付のendexclusive)を比較するために2回を取得して、2回比較して日数の合計数を返します。
(6)Leap Year、isWeekend(日付)であるかどうかを判断するためのIsLeapyear(日付)などのその他の一般的な方法、週末、有効期限が切れるかどうかを判断します。
(7)タイムゾーン変換計算方法、変換*、変換など(ZonedDateTime ZonedDateTime、String ZoneID)
(8)比較*、比較*、比較(日付1、日付2)を比較する
(9)starttimeofmonth()開始時刻の最初の日付 +00:00:00、endtimeofmonth()最終日+23:59:59秒から正確な正確な開始時刻*、end*など、正確な開始時間方法を取得します。 EndaccuracyTimeof*、Milliseconds(日付)までの正確さ、Nanoconds(localDateTime)までの正確さ。
(10)たとえば、誕生日、フェスティバルなどの定期的な日付の比較判断について、同じ月と日、Issamemonthday*、nextsamemonthday*を比較および審査する方法。
(11)GetConstellationNamecn(String MonthDaystr)などのConstellation計算方法、GetConStellation*は、日付に基づいて星座を計算します。
(12)指定された年と月または開始時間間隔のタイムリストを計算し、getDateList(int year、int month)などの*リストを取得し、指定された年と月のタイムリストを計算します。
(13)reduceaccuracytoday(日付)など、時間の精度を短縮する方法、reduceaccuracyto*、時間の精度を日数に短縮し、他の方法に0を追加し、たとえば2020-04-23 00:00:00を返します。
(14)Timestampメソッド、GetePoch*を取得します。たとえば、getePochmilli()はタイムスタンプを取得します。
(15)getage(誕生日)などの年齢計算方法、getage*、誕生日ごとに年齢を計算します。
(16)誕生日がここにあるかどうかを判断する方法、たとえばISBIRTHDAY(日付の誕生日)は、現在の日付が誕生日に基づいてここにあるかどうかを決定します。
(17)Weekofmonth(日付)など、週の週、週の週数を計算する方法。
(18)Iszhouyi(日付)、Ismondayなど、月曜日と金曜日の方法、Ismonday*、Iszhouyi*のかどうかを決定します。
(19)gettwelvetwo(日付)などの12時間の計算方法、gettwelvetwo*は、指定された時間に対応する12時間を取得します。
(20)GetQuarter(日付)などの四半期計算方法、GetQuarter*は、指定された時間に対応する四半期を取得します。
(21)四半期(4四半期)の正確な開始時間方法、StartTimeOffirstQuarter(int Year)などのStartTimeOf*四半期を取得し、指定された年の第1四半期を取得します。
(22)starttimeofyear(int year)など、年の正確な開始時間方法を取得し、指定された年の開始時間を取得します。
(23)一般的に使用される時間(明日、来週、来月、来年、など)明日()などの計算方法、明日、返品日。
(24)DayofWeek(日付、長いNewValue)など、DayOfWeek*で週の値メソッドを変更し、指定された値NewValueに週を変更し、返信日を変更します。
(25)現在の日付が営業日と翌営業日であるかどうかを判断するなどの方法を含む中国営業日の計算(休日情報を含む)、IschineseWorkday*、nextchineseworkday*、
たとえば、IschineseWorkday(日付、String HolidayData)、nextchineseWorkday(日付、文字列holidaydata)、
ホリデーデータは、休日のデータが年をサポートしていない場合、月曜日から金曜日まで営業日として審査されます。以下は、2021年にコンパイルしたホリデー情報です。
2021-01-01:0,2021-02-07:1,2021-02-11:0,2021-02-12:0,2021-02-15:0,2021-02-16:0,202 1-02-17:0,2021-02-20:1,2021-04-05:0,2021-04-25:1,2021-05-03:0,2021-05-04:0,2021-0 5-05:0,2021-05-08:1,2021-06-14:0,2021-09-18:1,2021-09-20:0,2021-09-21:0,2021-09-2 6:1,2021-10-01:0,2021-10-04:0,2021-10-05:0,2021-10-06:0,2021-10-07:0,2021-10-09:1
(26)iSOverlap(日付startdate1、date enddate1、date startdate2、date enddate2)など、2つ以上の期間、isoverlap*にオーバーラップ(交差)メソッドがあるかどうかを決定します。
(27)平均時間を計算する方法、平均(List Datelist)などの平均時間*は、「15:03:03」などの平均時間を返します。
(28)ミリ秒値に基づいてカウントダウンメソッドを計算し、着信時間オブジェクトと指定された形式、カウントダウン*などをサポートし、「27時間、10分、30秒」などのカウントダウンを返します。
(29)getDateFormatList(日付開始、日付終了、文字列dateFormatPattern)など、指定された間隔のフォーマット時間リストメソッドを取得します。
(30)Overlaptime(Date startDate1、date enddate1、date startdate2、date enddate2)など、2つの期間のオーバーラップ(交差)時間方法を計算し、ミリ秒値を返します。
詳細な使用のために、関連するテストコード:DateTimeCalculatureTiltESTを表示できます。
次のような一般的な日付形式が含まれています。
yyyy-mm-dd
HH:MM:SS
yyyy-mm-dd hh:mm:ss
yyyy-mm-dd hh:mm:ss.sss
yyyy-mm-dd hh:mm:ss.sssssssss
yyyy-mm-dd hh:mm:ss.ssssssssssssss
yyyy-mm-dd't'hh:mm:sszなどは、ミリ秒、マイクロ秒、ナノ秒などの正確な時間をサポートします。
(1)形式のメソッド、フォーマット*、formattodatestr(日付)は、次のような日付パーツを返します:yyyy-mm-dd;
Format(日付、DateTimeFormatter Formatter)Formatter YYYY_MM_DD_HH_MM_SS_FMT(YYYY-MM-DD HH:MM:SS)フォーマット日付などの定義されたフォーマッタを選択できます。
(2)parsedatestrtodate(string text)などの分析方法*、yyyy-mm-ddの日付を解析する、返信日。
Parsetodate(String Text、DateTimeFormatter Formatter)Formatterによると、これまでに解析します。
(3)SmartParsetodate(文字列テキスト)などの文字列の特性、SmartParse*の特性に従って自動的に認識および解析する自動解析方法。
(4)ISO形式の自動解析方法(Tを含む)は、文字列の特性に従って自動的に認識され、解析されます。 Parseisotodate(String Text)などのParseiso*は、日付を自動的に解析します。
(5)ParseePochmillitodate(String Text)などのタイムスタンプ法、ParseePochmilli*の解析タイムスタンプは、1590224790000などの日付です。
(6)parsedatedededededefaultStrtodateなどの日付のデフォルト形式、parsededededefaultStr*を解析する(文字列テキスト)
EEE MMM DD HHの分析:MM:SS Zzz Yyyyなど:SAT 5月23日17:06:30 CST 2020は日付です。
(7)フォーマット(日付、DateTimeFormatter Formatter、String ZoneID)、ZoneIDに従ってフォーマット日などのカスタムタイムゾーンフォーマットメソッド。
(8)フォーマット(日付、文字列dateFormatPattern)、dateformatpatternに従ってフォーマット日などのテンプレートフォーマットメソッドをカスタマイズします。
(9)parsetodate(文字列テキスト、文字列dateformatpattern)、dateformatpatternに従ってフォーマット日などのカスタムテンプレート解析方法。
(10)タイムスタンプのデフォルト形式(yyyy-mm-dd HH:mm:ss.ffffffffffff ffffffff nanoconds、次の0)フォーマット方法。
たとえば、FormattimestampStyle(日付)。
(11)タイムスタンプのデフォルトフォーマット(yyyy-mm-dd hh:mm:ss.ffffffffffffここで、ffffffffは次の0を省略します)。
たとえば、parsetimeStampStyletodate(文字列テキスト)。
(12)日付形式が正しいかどうかを確認する方法、isvaliddate(文字列テキスト)などのisvaliddate*は、yyyy-mm-dd形式の文字列が正しいかどうかを確認します。
(13)Parsetodate(String Text、String [] dateFormatPatterns)などのカスタムテンプレート配列解析方法によれば、DateFormatPatternsは複数のテンプレートをサポートし、解析の1つが成功する限り、対応する日付が返されます。
(14)自然言語の時間、明日、来週、来年、来年、昨日、先週、昨年、Parsenaturallanguagetodateなどの分析(String Text)、
parsenaturallanguagetodate(String Text、Map <String、String> NaturallanguageMap)カスタム解析自然言語タイムマップをサポートしています。
(15)フォーマットチャインズエダトテスト(日付、ブールイソッパーセース)、isuppercase falseなどの中国の日付の書式設定方法:2021年9月11日真:2021年9月11日。
(16)Parsechinesedatestrtodate(String Text)、サポート:2021年9月11日および2021年9月11日のフォーマット日付分析などの中国の日付分析方法。
注:システムタイムゾーンから異なる時間をフォーマットして解析する場合、カスタムタイムゾーンフォーマット方法を使用するか、withzoneメソッドを使用して次のようなタイムゾーンをリセットできます。
yyyy_mm_dd_hh_mm_ss_sss_fmt.withzone(Zoneid.of( "Europe/Paris")。
詳細な使用のために、関連するテストコードを表示できます:DateTimeFormatterutiltEST。
含む:
(1)指定された時間(年、月、日の階層を含むカレンダー)のカレンダーを生成します。 GenerateCalendar*たとえば、GenerateCalendar(int year、int month)は、指定された年と月のカレンダーを生成します。
(2)月のカレンダーとすべての休日情報方法、GenerateCalendarwithholiday*、intecalendarwithholiday(int <string、string、string、string、string> localholidaymap、map <string、string> chenishhorholidaymap、chanidholidaymap、<文字列<文字列<文字列<文字列<文字列<文字列<文字列<文字列<文字列<文字列<文字列<文字列標本<文字列史帯<月カレンダーやすべての休日情報を含む月、休日や営業日などをカスタマイズできます。
詳細な使用のために、関連するテストコードを表示できます:CalendaryTiltest。
含む:
(1)月の日付、年、月、日の計算。
(2)月カレンダー中に星座を計算します。
(3)24の太陽項などの計算(4)グレゴリオカレンダーへの月のカレンダーに関する注記:1900-2100グレゴリオカレンダーの月のカレンダー変換のみがサポートされています。
詳細な使用のために、関連するテストコードを表示できます:Lunardatetest。
含む:
(1)グレゴリオホリデー、GetLocalHoliday*たとえば、GetLocalHoliday(日付)のグレゴリオ祝日、GetLocalholiday(日付、Map <String、String> LocalHolidayMap)を計算します。
(2)Lunar Holidays、Getchineseholday*の計算、たとえば、Getchineseholiday(日付)は、日付の月の休日を計算します。
(3)たとえば、24の太陽項、GetSolar Term*の計算、GetSolar Term(日付)は、日付の24の太陽光項を計算します。
注:Lunardateは、月カレンダーと24の太陽項で使用されており、1900年から2100年のグレゴリオカレンダーの計算のみをサポートしています。
詳細な使用のために、関連するテストコードを表示できます。
左から右へのクロンの式(スペースで区切られた):秒(0-59)分(0-59)時間(0-23)日付(1-31)月(1-12または1月〜12月の整数)(1-7またはSUN-SAT(1 = SUN)の整数)年(オプション、1970-2099)
特殊文字はすべてのフィールドに使用できます:、 - * /は列挙、範囲、任意、間隔の日付、およびその他です:? LWは、最後の、有効な営業日(月曜日から金曜日)です
週を使用することもできます:? L#は任意であり、最後に、Cron式は毎月の週に一般的に使用されます。
(1)0 0 2 1 *? *月の午前2時にトリガーを示します(2)0 15 10? *月曜日は、課題が月曜日から金曜日の午前10時15分に実行されることを示しています(3)0 15 10? * 6L 2002-2006は、2002年から2006年までの毎月の最後の金曜日の午前10時15分に割り当てが行われることを示しています(4)0 0/30 9-17 *? 30分ごとに(5)0 15 10 l *?毎月午前10時15分にトリガーを示します(6)0 15 10? * 6#3は、毎月第3金曜日の午前10時15分にトリガーを示しています(6)0 15 10? * 6#3は、毎月第3金曜日の午前10時15分にトリガーを示しています(4)0 0/30 9-17 *? 30分ごとに(5)0 15 10 l *?毎月午前10時15分にトリガーを示します(6)0 15 10? * 6#3は、毎月第3金曜日の午前10時15分にトリガーを示しています(6)0 15 10? * 6#3は、毎月第3金曜日の午前10時15分にトリガーを示しています(6)0 15 10? *
(1)CRON発現方法、ISVALIDEXPRESSION、およびFORMATEXPRESSIONの検証とフォーマットが含まれます。
(2)次の実行時間メソッドを生成し、getNextTimeとgetNextTimeListを生成します。
(3)次の実行時間の日付フォーマット(yyyy-mm-dd hh:mm:ss)メソッドを生成します。
(4)Cron式の次の実行時間が指定された日付メソッドに等しいかどうかを比較します。
注:基礎となる層は、Quartzのクローネクスプレッション処理を使用します。
詳細な使用のために、関連するテストコードを表示できます:CronexpressionTiltEST。
計算時間のかかるツールは、数秒、ミリ秒、ナノ秒をサポートします
含む:
(1)計算には時間がかかり、時間のかかる結果を返します。
(2)計算には時間がかかり、タスク名をカスタマイズし、時間のかかる結果を出力します。
(3)計算時間、正確なタイミングを返し、3桁を使用して、round_downを使用して、3桁を超える小数部品などを破棄します。
詳細な使用のために、関連するテストコード:costuitltestを表示できます。
関数を含む:
(1)現在の時間に基づいて時間の自然言語を分析します。
(2)指定された時間に基づいて時間の自然言語を分析します。
(3)パルセコンドレントの同時実行など、さまざまな呼び出し方法を追加します。これにより、タイムアウト時間とカスタムスレッドプールを設定して実行効率を向上させます。
https://github.com/shinyke/time-nlpから変更
いくつかの変更が次のように行われました:
(1)属性をカプセル化し、それらを変更して、ラクダの命名基準に準拠するように変更します。
(2)通常のリソースファイルのロードをシングルトンの読み込みに変更します。
(3)機能に従ってクラスを個別のクラスに再配信する。
(4)Java 8 Date APIを使用して書き換えます。
(5)コメントを追加し、コードを最適化します。
(6)元のプロジェクトで問題を修復する:標準時間yyyy-mm-dd、yyyy-mm-dd HH:mm:ssおよびyyyy-mm-dd HH:mm分析の問題。
(7)元のプロジェクトで問題を修正します:1時間、1時間半、1時間50分、その他の分析の問題。 50秒、10分30秒など、秒ごとにサポートします。
(8)元のプロジェクトで問題を修復する:修理の現在の時刻は午前10時であるため、明日の午後3時の問題として午後3時が特定されます。
(9)元のプロジェクトの問題を修正:小数分解分解別例外問題を修正します。
(10)パフォーマンスの最適化、使用済みの規則性をプリコンパイルし、キャッシュに入れ、次回パフォーマンスを改善するために直接使用します。
注:NLPは特定の認識障害率を持ち、成功率を繰り返し、改善し続けます。
この機能はミニバージョンには含まれていません。
詳細な使用のために、関連するテストコードを表示できます:timenlputiltiltest。
3日間のキャッシュ時間の設定など、ユニット変換の計算を容易にするタイムユニット定数:3*milliseconds_per_day(24*60*60*1000ミリ秒)
含む:
(1)milliseconds_per_secondsなどの基本単位の値を1秒あたり1000ミリ秒に変換します。
(2)seconds_per_dayなど、秒の基本値に変換します。1日あたりの秒数は24*60*60です。
(3)milliseconds_per_dayなどのMillisecondsの基本値に変換します。 1日あたりのミリ秒数は24*60*60*1000です。
詳細な使用のために、関連するテストコードXktimeConStantTestを表示できます。
(1)フォークプロジェクト。
(2)DEVブランチで変更します。
(3)プルリクエストを送信します。
(1)元旦、春祭り、清祭フェスティバル、労働者の日、ドラゴンボートフェスティバル、中流祭り、その他の休日などの一般的な休日。
(2)24の太陽項によってサポートされています。